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)创建一个长字符串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 回答