我正在研究这个问题,但我无法弄清楚第二部分。我尝试使用反向列表,但它没有计算出我的计划方式。
给定一个列表L(例如[1,2,3,4]),编写一个生成以下嵌套列表的程序:
- L1 =
[[1],[1,2],[1,2,3],[1,2,3,4]]
,- 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)
答案 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:])