我想在python(而不是任何其他函数)中使用join函数将两个列表合并到嵌套列表中,假设列表长度相等,例如:
list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
我希望它能够生成一个这样的新列表:
[[1,"a"], [2,"b"], [3,"c"]]
答案 0 :(得分:6)
我认为您不了解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
这样的列表)。这使得它更有效率,尤其是在处理更大的列表时。
答案 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)))