これまでのところ、リストのマージに関する質問しか見つかりませんでした。
3 つのリスト (2 つのリストと 1 つの 2D リスト) を取得しようとしています。
list1 = [[1,11,12],[2,21,22],[3,31,32]]
list2 = [4,5,6]
list3 = [7,8,9]
これらの値を CSV ファイルに書き込むと、 //必要な出力が得られます。
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.
現在のコード (両方の試行) は、list1 の 1 桁の値ごとに、list2 と list3 のすべての値を反復処理しています。2 回の試行の間に私が何とかできたのは、書き出された数字の順序を変更することだけです。
私がやりたいのは、各リストの最初の値を書き出し、次に2番目などを書き出して、目的の出力を提供することです。
これを調整して目的の出力を得るにはどうすればよいですか/より良い代替手段はありますか?
Python 2.7 のみ
Abhijit の回答から作成したソリューションを追加しました。
result = zip(zip(*list1)[0], list2, list3)
for row in result:
tempRow = row
fileWriter.writerow(tempRow)