在进入下一个元素之前,如何将多个列表的一个元素写入文件?

时间:2016-03-11 02:25:20

标签: python

我有多个列表,例如

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。所以所有的第一个元素,然后是所有的第二个元素,等等。

3 个答案:

答案 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,无]