2

私は初心者ですが、リストから引用符とコンマを削除するにはどうすればよいですか? または、どのように「文字列を外す」のですか?

辞書 (dic) を表示しないと、使用しているコードは次のようになります。

>>>import itertools
>>>list(itertools.product(dic[2], dic[3])

私の結果は次のようになります。

[('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), ('C', 'D'), ('C', 'E'), ('C', 'F')]

私は彼らがこのように見えることを望みます:

AD, AE, AF, BD, BE, BF,
4

5 に答える 5

11

文字列を生成したいので、文字列操作 (特にjoinメソッド)を使用できます。

>>> import itertools
>>> a = ['A', 'B']
>>> b = ['D', 'E', 'F']
>>> print ', '.join(''.join(x) for x in itertools.product(a, b))
AD, AE, AF, BD, BE, BF

実際には必要さえありませんitertools。ネストされた内包表記を使用できます。

>>> print ', '.join(x + y for x in a for y in b)
于 2012-06-17T23:26:07.567 に答える
1

結合文字列メソッドを使用できます:

>>> import itertools
>>> p = list( itertools.product( ['a','b','c' ],['e','f','g'] ) )
>>> p
[('a', 'e'), ('a', 'f'), ('a', 'g'), ('b', 'e'), ('b', 'f'), ('b', 'g'), ('c', 'e'), ('c', 'f'), ('c', 'g')]
>>> ', '.join( a+b for (a,b) in p )
'ae, af, ag, be, bf, bg, ce, cf, cg'
于 2012-06-17T23:28:52.067 に答える
0

別の解決策:

In [61]: l=[('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), 
            ('C', 'D'), ('C', 'E'), ('C', 'F')]

In [62]: ', '.join(t[0]+t[1] for t in l)
Out[62]: 'AD, AE, AF, BD, BE, BF, CD, CE, CF'
于 2012-06-18T01:40:14.593 に答える
0
import itertools
import sys
yourlist = list(itertools.product(dic[2], dic[3])
sys.stdout.write (yourlist[0][0] + yourlist[0][1])
for i in xrange (1, len(yourlist)):
    sys.stdout.write (", " + yourlist[i][0] + yourlist[i][1])

他の回答ではjoin()メソッドを使用していますが (これを行う正しい「python」の方法)、単純で大雑把で難しい解決策を示したので、結合方法を理解しようとして現在のレッスンを終了することはありません。 )メソッドが機能します。

于 2012-06-17T23:30:15.853 に答える
0

リスト内包表記を使用するとどうなりますか?

p = [('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), ('C', 'D'), ('C', 'E'), ('C', 'F')]

', '.join([''.join(i) for i in p])

および文字列を連結する join()は次のようになります。

AD, AE, AF, BD, BE, BF, CD, CE, CF

あるいは、ジェネレータ式も機能します(@Nicklas Bのおかげで、何らかの理由でリストの理解が最初に頭に浮かびます):

', '.join(''.join(i) for i in p)
于 2012-06-17T23:36:23.127 に答える