将两个列表交错连接

4
我有一个列表,是通过解析一些文本创建的。 假设这个列表看起来像这样:
charlist = ['a', 'b', 'c']

我想要获取以下列表。
numlist = [3, 2, 1]

并将它们组合在一起,使我的列表看起来像这样。
[['a', 3], ['b', 2], ['c', 1]]

这个有简单的方法吗?

7
你读过 zip() 吗?在 Stack Overflow 上搜索会有相关的结果。 - S.Lott
1
不,我没有。谢谢你告诉我这件事。我在 Stack Overflow 上为这个问题搜索了很多,但不知道如何表达才能得到最好的结果。谢谢。 - jml
2
@jml:我有点惊讶在 Stack Overflow 上搜索了这么多次都没有找到答案。我也有点惊讶你还没有查看 Python 内置函数列表。这个列表很短,但非常有用。http://docs.python.org/library/functions.html。比在这里提问更有帮助。 - S.Lott
5
@S.Lott,除非您学过函数式编程课程,否则您可能甚至不会预期标准API中会有类似这样的东西。 :) (注:已经进行了翻译和简化,并保留了原意。未返回任何额外内容。) - sarnold
6
@S.Lott,我认为原帖作者可能无法根据他掌握的词汇量发现所谓的重复内容。(实际上,如果确实是重复内容,为什么不标记它呢?)尽管zip是函数的一个很好的名称,但它并不一定直观 - 这就是原帖作者选择这样的用词的原因。在我看来,SO确实是一个面向那些实际上没有完全阅读给定语言API文档的人的论坛。 - Kirk Woll
显示剩余4条评论
5个回答

9
如果你想要一个列表的列表而不是元组的列表,可以使用以下方法:
map(list,zip(charlist,numlist))

7
zip内置函数可以解决这个问题。
文档中的示例:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

2

这里有另一种简单的方法可以实现它。

charlist = ['a', 'b', 'c']
numlist = [3, 2, 1]
newlist = []

for key, a in enumerate(charlist):
    newlist.append([a,numlist[key]])

newlist的内容:[['a', 3], ['b', 2], ['c', 1]]


1
p=[] 
for i in range(len(charlist)): 
    p.append([charlist[i],numlist[i]])

1
你可以尝试以下方法,虽然我相信还会有更好的方法:
l1 = ['a', 'b', 'c']
l2 = [1, 2, 3]    
l = []
for i in 1:length(l1):
    l.append([l1[i], l2[i]])

祝一切顺利。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接