2012-10-02 176 views
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) 

回答

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) 
+0

您可以使用列表理解。 – arshajii

+0

非常感谢!所以-i使它像那样工作? –

+0

会不会需要2 LC? vs 1 for循环? –

0

不扭转你的列表,并更改第二循环

for x in range(n-1,-1,-1): 
    l2.append(mylist[x:]) 
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),列表理解可能是一个更短,更优雅的解决方案。

+0

是的,我们不都是 – arshajii

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