所以我正在阅读一个包含两列的CSV文件,然后获取所有这些列的产品。
我要做的是将他的产品从元组列表转换为列表列表。我最终希望将每个元组组合成一个带逗号的字符串。这是我的代码:
rowa = []
rowb = []
for row in csvfile:
if row[0] != "":
rowa.append(row[0])
if row[1] != "":
rowb.append(row[1])
wordlist = list(product(rowa, rowb))
我的伪代码就是这样:
for x in wordlist:
x = list(x)
x.join(" ")
print wordlist
应该会显示一个字符串列表,这些字符串将是旧元组,变成一个列表然后用空格连接在一起
答案 0 :(得分:6)
join method反之亦然;在空格字符串上调用它:
for x in wordlist:
" ".join(x)
它适用于任何序列,因此无需在此处将元组转换为列表。
请注意,您可以省略列的!= ""
测试;空字符串也被认为是boolean False:
for row in csvfile:
if row[0]:
rowa.append(row[0])
if row[1]:
rowb.append(row[1])
最后,因为您已经在单词列表上进行迭代,所以只需将其保留为生成器并完全取消列表调用。
wordlist = [" ".join(x) for x in product(rowa, rowb)]
答案 1 :(得分:1)
无需创建中间列表
rowa = []
rowb = []
for row in csvfile:
row0,row1 = row[0].lower(),row1.lower()
if row0 != row1:
if row[0] != "":
rowa.append(row0)
if row[1] != "":
rowb.append(row1)
wordlist = product(rowa, rowb)
result = [" ".join(x) for x in wordlist]
生成器表达式应该完成工作
修改强> 附加要求
答案 2 :(得分:0)
几乎猜测你的意思,但是你试图压缩两个列表吗?
wordlist = zip(rowa, rowb)