0

したがって、2つの列を持つ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古いタプルとなる文字列のリストを表示し、リストに変換してからスペースで結合する必要があります

4

3 に答える 3

6

joinメソッドは逆に機能します。スペース文字列でそれを呼び出します:

for x in wordlist:
    " ".join(x)

これはどのシーケンスでも機能するため、ここでタプルをリストに変換する必要はありません。

!= ""列のテストを省略できることに注意してください。空の文字列もブール値の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)]
于 2012-07-03T14:27:22.877 に答える
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]

ジェネレータ式がその仕事をするはずです

追加要件を編集する

于 2012-07-03T14:29:54.500 に答える
0

あなたが何を意味するかをかなり推測していますが、2つのリストを圧縮しようとしていますか?

wordlist = zip(rowa, rowb)
于 2012-07-03T14:27:50.143 に答える