2014-09-12 141 views
0

我想要一個只包含嵌套列表的第一個元素的列表。 嵌套表L,它的樣子:Python:嵌套列表中的第一個元素

L =[ [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]] ] 

for l in L: 
for t in l: 
    R.append(t[0]) 
print 'R=', R 

輸出是R= [0, 3, 6, 0, 3, 6, 0, 3, 6]但我想得到這樣一個分離的結果是:

R= [[0, 3, 6], [0, 3, 6], [0, 3, 6]] 

我也通過列表理解試過像[[R.append(t[0]) for t in l] for l in L]但這給出[[None, None, None], [None, None, None], [None, None, None]]

出了什麼問題?

回答

2

您的解決方案返回[[None, None, None], [None, None, None], [None, None, None]]因爲append返回值None的方法。用t[0]取代它應該可以做到。

什麼你要找的是:

R = [[t[0] for t in l] for l in L] 
2

你可以做這樣的:

>>> L = [ [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]] ] 
>>> R = [ [x[0] for x in sl ] for sl in L ] 
>>> print R 
[[0, 3, 6], [0, 3, 6], [0, 3, 6]] 
+0

@ isedev謝謝! – lara 2014-09-12 11:07:19

0
L =[ [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]] ] 
R=[] 
for l in L: 
temp=[] 
for t in l: 
    temp.append(t[0]) 
R.append(temp) 
print 'R=', R 

輸出:

R= [[0, 3, 6], [0, 3, 6], [0, 3, 6]] 
0

你所要的輸出是一個嵌套列表。您可以嵌套他們「手」是這樣的:

L =[ [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]], [[0,1,2],[3,4,5],[6,7,8]] ] 
R = [] 
for l in L: 
    R2 = [] 
    for t in l: 
     r2.append(t[0]) 
    R.append(R2) 
print 'R=', R 
相關問題