重复添加相同的字符串字符串到列表,使其成为元组

时间:2012-09-23 23:12:46

标签: python zip

我正在尝试将一个字符串与一系列数字组合成一个列表。

例如,从:

开始
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'), ...]

2 个答案:

答案 0 :(得分: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))

这可以避免创建一个新的列表对象,可能非常大。

答案 1 :(得分:1)

>>> a = [12,23,45,67,89]
>>> string = "John"
>>> my_tuple = [(i,string) for i in a]
>>> print my_tuple

您可以遍历字符串中的每个位置,以便zip导致您之前看到的行为。