我想使用 python 中的 join 函数(不是任何其他函数)将两个列表合并为嵌套列表,假设列表长度相等,例如:
list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
我希望它产生一个像这样的新列表:
[[1,"a"], [2,"b"], [3,"c"]]
请您参考如下方法:
我认为你不明白 str.join 的用途。
str.join是一个字符串方法,它接受一个可迭代的字符串(通常是一个列表)并返回一个新的字符串对象,该对象是由调用该方法的字符串分隔的那些字符串的串联。
下面是一个演示:
>>> strs = ['a', 'b', 'c']
>>> ''.join(strs)
'abc'
>>> '--'.join(strs)
'a--b--c'
>>>
这意味着您不会将 str.join 用于您正在尝试执行的操作。相反,您可以使用 zip和一个 list 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 那样的列表>).这使其更加高效,尤其是在处理更大的列表时。
