我有多个要处理的列表。我要做的是在垂直列中为每个列表(在本例中为索引1,2和3)取一个索引。并将这些垂直数字添加到空列表中。
line1=[1,2,3,4,5,5,6]
line2=[3,5,7,8,9,6,4]
line3=[5,6,3,7,8,3,7]
vlist1=[]
vlist2=[]
vlist3=[]
预期产出
Vlist1=[1,3,5]
Vlist2=[2,5,6]
Vlist3=[3,7,3]
答案 0 :(得分:5)
在其中包含带数字的变量通常是设计错误。相反,您可能应该有一个嵌套的数据结构。如果您使用line1
,line2
和line3
列表执行此操作,则会获得嵌套列表:
lines = [[1,2,3,4,5,5,6],
[3,5,7,8,9,6,4],
[5,6,3,7,8,3,7]]
然后,您可以使用zip
vlist = list(zip(*lines)) # note the list call is not needed in Python 2
现在,您可以通过索引或切片到转置列表来访问内部列表(现在实际上是元组)。
first_three_vlists = vlist[:3]
答案 1 :(得分:1)
在python 3中zip
返回一个生成器对象,你需要将其视为一个:
from itertools import islice
vlist1,vlist2,vlist3 = islice(zip(line1,line2,line3),3)
但你真的应该keep your data out of your variable names。使用list-of-lists数据结构,如果你需要转置它,只需执行:
list(zip(*nested_list))
Out[13]: [(1, 3, 5), (2, 5, 6), (3, 7, 3), (4, 8, 7), (5, 9, 8), (5, 6, 3), (6, 4, 7)]
答案 2 :(得分:0)
使用pythons zip()
函数,相应地编制索引。
>>> line1=[1,2,3,4,5,5,6]
>>> line2=[3,5,7,8,9,6,4]
>>> line3=[5,6,3,7,8,3,7]
>>> zip(line1,line2,line3)
[(1, 3, 5), (2, 5, 6), (3, 7, 3), (4, 8, 7), (5, 9, 8), (5, 6, 3), (6, 4, 7)]
答案 3 :(得分:0)
将输入列表放入列表中。然后创建第i个vlist,执行以下操作:
vlist[i] = [];
for l in list_of_lists:
vlist[i].append(l[i])