我有多个列表,例如
x = [1,2,3,4]
y = [5,6,7,8]
z = [9,10,11,12]
我想将每个列表的一个元素写入文件。
我想要获得的输出是1 5 9 2 6 10 3 7 11 4 8 12
。所以所有的第一个元素,然后是所有的第二个元素,等等。
答案 0 :(得分:1)
使用Zip
和将每个整数元素转换为string
,以便您可以加入它们:
x = [1,2,3,4]
y = [5,6,7,8]
z = [9,10,11,12]
g = " ".join(str(x) for t in zip(x, y, z) for x in t)
将g
写入您的文件。
摘录Zip如何运作:
当你
zip()
在一起时,每个包含N个元素的M个列表 结果有N个元素。每个元素都是一个M元组。
换句话说,zip(x,y,z)
会改变你的:
[1,2,3,4]
[5,6,7,8]
[9,10,11,12]
到
[(1,5,9),(2,6,10),(3,7,11),(4,8,12)]
答案 1 :(得分:0)
这应该使您能够拥有三个列表,每个列表中可能包含不同数量的项目。
number = max(x.len(), y.len(),z.len())
count = 0
total = {}
while count < number:
try:
total.append(x[count])
except:
pass
try:
total.append(y[count])
except:
pass
try:
total.append(z[count])
except:
pass
count += 1
print(' '.join(total))
答案 2 :(得分:0)
如果您没有相同长度的列表,可以使用zip_longest
(或python 2中的izip_longest
):
from itertools import zip_longest
x = [1, 2, 3, 4, 1]
y = [5, 6, 7, 8, 99]
z = [9, 10, 11, 12] # short list
reordered = []
for elements in zip_longest(x, y, z):
reordered.extend(elements)
结果列于:
[1,5,9,2,6,10,3,7,11,4,8,12,1,99,无]