到目前为止,我能找到的只是与将列表合并在一起的问题。
我正在寻找 3 个列表(2 个列表和一个 2D 列表)
list1 = [[1,11,12],[2,21,22],[3,31,32]]
list2 = [4,5,6]
list3 = [7,8,9]
并将这些值写入 CSV 文件,结果如下 // Desired Output
Row1,Row2,Row3
1,4,7
2,5,8
3,6,9
不应将 11,12 等写入 CSV 文件。
代码:
f = open('file.csv', 'wb')
fileWriter = csv.writer(f)
fileWriter.writerow(['Row1', 'Row2', 'Row3']) # Write header row
试图:
listlen = len(list2)
list1len = len(list1)
for i in range(listlen):
for j in range(listlen):
for k in range(list1len):
fileWriter.writerow([list1[k][0],list2[i],list3[j]])
结果:
Row1,Row2,Row3
1,4,7
2,4,7
3,4,7
试图:
for A,B,C in list1:
for X in list2:
for Y in list3:
tempA = A
tempX = X
tempY = Y
fileWriter.writerow([tempA,tempX,tempY])
结果:
Row1,Row2,Row3
1,4,7
1,4,8
1,4,9
etc.
当前代码(两次尝试)正在遍历 list2 和 list3 中的所有值,以获取 list1 中的每个单个数字值。我在两次尝试之间所做的只是改变了写出的数字的顺序。
我想做的是写出每个列表的第一个值,然后是第二个等以提供所需的输出。
我该如何调整它以提供所需的输出/是否有更好的选择?
仅限 Python 2.7
添加了我根据 Abhijit 的回答创建的解决方案:
result = zip(zip(*list1)[0], list2, list3)
for row in result:
tempRow = row
fileWriter.writerow(tempRow)