2015-06-20 99 views
0

说我有一些名单,像这样:如何从列表的列表获取值,并将它们添加到较小的列表

myList1 = [1,2,3] 
myList2 = [7,8,9] 
myList3 = [13,14,15] 

我把它们添加到一个更大的列表:

myBigList = [] 
myBigList.append(myList1) 
myBigList.append(myList2) 
myBigList.append(myList3) 

现在我有较小的名单像这样:

a = [] 
b = [] 
c = [] 

我怎么会通过我的'myBigList名单迭代,并拉出所有的第一个值小的列表并将这些值存储在A中,所有我的较短列表中的第二个值在B中,并且所有第三个中较短的一个存储在c中?我感谢所有的帮助。

回答

2
a = [x[0] for x in myBigList] 
b = [x[1] for x in myBigList] 
c = [x[2] for x in myBigList] 

编辑:更有效和优化的解决方案

a,b,c = [[x[i] for x in myBigList] for i in range(3)] 
+0

这是O(n)根据每个'list'写入多少代码。 – TigerhawkT3

+0

@ TigerhawkT3,绝对同意,但不希望他们分开?...我的意思是喜欢单独的变量? –

+0

是的,但这仍然没有必要。 – TigerhawkT3

3

zip是很大的。

>>> myList1 = [1,2,3] 
>>> myList2 = [7,8,9] 
>>> myList3 = [13,14,15] 
>>> myBigList = [] 
>>> myBigList.append(myList1) 
>>> myBigList.append(myList2) 
>>> myBigList.append(myList3) 
>>> myBigList 
[[1, 2, 3], [7, 8, 9], [13, 14, 15]] 
>>> a, b, c = zip(*myBigList) 
>>> a 
(1, 7, 13) 
>>> b 
(2, 8, 14) 
>>> c 
(3, 9, 15) 

你是否在使用myBigList做东西?如果你愿意,你可以到达a,bc,根本没有把它们放入myBigList

>>> a, b, c = zip(myList1, myList2, myList3) 
>>> a 
(1, 7, 13) 
>>> b 
(2, 8, 14) 
>>> c 
(3, 9, 15) 
+0

mmmm ...我真的很想念! –

相关问题