2

文字列と一連の数字をタプルとしてリストに結合しようとしています。

たとえば、次のように始まります。

a = [12,23,45,67,89]  
string = "John"  

私はそれを次のように変えたい:

tuples = [(12,'John'),(23,'John'),(45,'John'),(67,'John'),(89,'John')]

私は試した:

string2 = string * len(a)
tuples = zip(a, string2)

しかし、これは返されました:

tuples = [(12,'J'), (23,'o'), ...]
4

2 に答える 2

2

を使用する場合はzip()、乗算する前に文字列変数のリストを作成します。

string2 = [string] * len(a)
tuples = zip(a,string2)

string * len(a)1つの長い文字列を作成し、zip()それを繰り返して個々の文字を引き出します。代わりにリストを乗算すると、値len(a)への個別の参照を含むリストが得られます。stringその後、反復はstring毎回あなたに与えます。

繰り返しitertools.repeat()与えるために使用することもできます:string

from itertools import repeat

tuples = zip(a, repeat(string))

これにより、非常に大きな可能性のある新しいリストオブジェクトの作成が回避されます。

于 2012-09-23T23:17:06.740 に答える
1
>>> a = [12,23,45,67,89]
>>> string = "John"
>>> my_tuple = [(i,string) for i in a]
>>> print my_tuple

文字列内の各位置を反復処理できるためzip、以前に表示されていた動作が発生します。

于 2012-09-23T23:14:50.507 に答える