- 您錯過了列表定義中的終止
]
。
- 您不能在列表中放置for循環。
x.C是某種列表或序列嗎?您是否打算將每個x.C項目作爲CSV中的單獨字段編寫?
我相信你打算使用列表連接運算符+
,它將兩個列表粘在一起並列成一個列表。使用它像這樣:
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
你舉的例子就變成:
for x in case_log_list:
c_list = [item for item in x.C.all] # turn x.C into a list
output_list = [x.A, x.B] + c_list + [x.D,] # assemble list
writer.writerow(output_list)
或者,如果你想成爲簡短:
for x in case_log_list:
writer.writerow ([x.A, x.B] + [item for item in x.C.all] + [x.D,])
注:
如果x.C.all
是已經是一個列表 - 也就是說,如果type(x.C.all) is list
是True
- 那麼[x.A, x.B] + x.C.all + [x.D,]
就足夠了。
c_list = [item for item in x.C.all]
是列表理解,它可以讓你做的事情的清單,而無需編寫一個for
循環。
列表解析非常強大,非常優雅,您應該儘可能使用它們。無論何時您需要根據另一個列表製作列表,按照某個標準篩選列表中的項目,或者同時對這兩個列表進行篩選,列表理解可能是一個好方法。
單字母變量名狀x
,A
,B
,C
,D
是真的很可怕,因爲他們沒有給出關於變量保存什麼數據,什麼樣的類型可以是信息,什麼樣的價值觀它可能包含,使用等如果可以的話,更多的描述性變量名稱。
請指定您收到的語法錯誤。 (複製並粘貼Python會話中的整個錯誤。) – 2012-02-16 07:46:24