1

我正在解决这个问题,但我无法弄清楚第二部分。我尝试使用反向列表,但它没有解决我的计划。

给定一个列表 L(例如 [1,2,3,4]),编写一个生成以下嵌套列表的程序:

  1. L1 = [[1],[1,2],[1,2,3],[1,2,3,4]],
  2. L2 = [[4],[3,4],[2,3,4],[1,2,3,4]]

到目前为止我的代码:

mylist=[,1,2,3,4] 
print("Orginal list L=",mylist) 
n=len(mylist) 
l1=[] 
l2=[] 


for x in range(1,n+1,1):
    l1.append(mylist[0:x]) 
print("L1=",l1) #prints final product of l1


mylist.reverse() #this is where i get messed up
for x in range(1,n+1,1): 
    l2.append(mylist[0:x]) 
print("L2=",l2) 
4

4 回答 4

2

您可以在 python 中使用负索引:

我的列表[-1] -> 4

鉴于此,这将起作用:

mylist=[1,2,3,4] 
print("Orginal list L=", mylist)
n=len(mylist) 
l1=[] 
l2=[] 

for i in range(1, n+1):
    l1.append(mylist[0:i])
    l2.append(mylist[-i:])
print("L1=", l1)
print("L2=", l2)
于 2012-10-02T03:30:52.753 回答
1

伙计,我喜欢列表理解。

L1 = [L[:i+1] for i in xrange(len(L))]
L2 = [L[-i-1:] for i in xrange(len(L))]

您可以将列表理解视为构建列表的一种简单方法。通常,如果你看到自己在做for x in y: ... list.append(z),列表推导式可能是一个更短更优雅的解决方案。

于 2012-10-02T03:34:16.057 回答
1
lst = [1,2,3,4]
[lst[0:i] for i in range(1,5)]
[lst[-i:] for i in range(1,5)]
于 2012-10-02T03:37:16.693 回答
0

不要颠倒您的列表并更改第二个循环

for x in range(n-1,-1,-1): 
    l2.append(mylist[x:]) 
于 2012-10-02T03:30:38.387 回答