列表中的列表

时间:2012-10-02 03:24:09

标签: python python-3.x

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

  

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

     
      
  1. L1 = [[1],[1,2],[1,2,3],[1,2,3,4]]
  2.   
  3. L2 = [[4],[3,4],[2,3,4],[1,2,3,4]]
  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 个答案:

答案 0 :(得分:2)

你可以在python中使用负面索引:

  

mylist [-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)

答案 1 :(得分: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),那么列表理解可能是一种更短更优雅的解决方案。

答案 2 :(得分:1)

lst = [1,2,3,4]
[lst[0:i] for i in range(1,5)]
[lst[-i:] for i in range(1,5)]

答案 3 :(得分:0)

不要反转您的列表并更改第二个循环

for x in range(n-1,-1,-1): 
    l2.append(mylist[x:])