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

use*_*158 1 python list

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

list1 = [1, 2, 3]

list2 = ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

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

[[1,"a"], [2,"b"], [3,"c"]]
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 7

我不认为你理解的是什么str.join.

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

以下是演示:

>>> strs = ['a', 'b', 'c']
>>> ''.join(strs)
'abc'
>>> '--'.join(strs)
'a--b--c'
>>>
Run Code Online (Sandbox Code Playgroud)

这意味着你不会str.join用于你想要做的事情.相反,您可以使用zip列表理解:

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

但请注意,如果您使用的是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']]
>>>
Run Code Online (Sandbox Code Playgroud)

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