2012-10-02 215 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)]