将两个列表连接到python中的元组

时间:2014-01-17 21:24:21

标签: python list

我想在python(而不是任何其他函数)中使用join函数将两个列表合并到嵌套列表中,假设列表长度相等,例如:

list1 = [1, 2, 3]

list2 = ["a", "b", "c"]

我希望它能够生成一个这样的新列表:

[[1,"a"], [2,"b"], [3,"c"]]

3 个答案:

答案 0 :(得分:6)

我认为您不了解str.join的用途。

str.join是一个字符串方法,它接受一个可迭代的(通常是列表)字符串,并返回一个新的字符串对象,该字符串对象是由调用该方法的字符串分隔的字符串的串联。

以下是演示:

>>> strs = ['a', 'b', 'c']
>>> ''.join(strs)
'abc'
>>> '--'.join(strs)
'a--b--c'
>>>

这意味着您不会将str.join用于您要执行的操作。相反,您可以使用ziplist comprehension

>>> list1 = [1, 2, 3]
>>> list2 = ["a", "b", "c"]
>>> [list(x) for x in zip(list1, list2)]
[[1, 'a'], [2, 'b'], [3, 'c']]
>>>

但请注意,如果您使用的是Python 2.x,则可能需要使用itertools.izip代替zip

>>> from itertools import izip
>>> list1 = [1, 2, 3]
>>> list2 = ["a", "b", "c"]
>>> [list(x) for x in izip(list1, list2)]
[[1, 'a'], [2, 'b'], [3, 'c']]
>>>

与Python 3.x zip一样,itertools.izip将返回一个迭代器(而不是像Python 2.x zip这样的列表)。这使得它更有效率,尤其是在处理更大的列表时。

答案 1 :(得分:0)

尤里卡!我的朋友,您正在寻找的联接功能如下:

def join(l1, l2):
    return [list(x) for x in zip(l1, l2)]

print join(list1, list2) 

: - )

答案 2 :(得分:0)

list(map(list, zip(list1, list2)))