尝试将元组列表转换为列表列表

时间:2012-07-03 14:23:18

标签: python string list tuples

所以我正在阅读一个包含两列的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应该会显示一个字符串列表,这些字符串将是旧元组,变成一个列表然后用空格连接在一起

3 个答案:

答案 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)