我正在尝试将一个字符串与一系列数字组合成一个列表。
例如,从:
开始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'), ...]
答案 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
导致您之前看到的行为。