首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -列表连接

Python -列表连接
EN

Stack Overflow用户
提问于 2015-01-05 23:42:09
回答 3查看 105关注 0票数 0

我有两个列表,我想创建一个包含其数据的列表。

代码语言:javascript
复制
ls1 = ["1","2","3","4"]

ls2 = ["4","3","2","1"]

我要找的答案是这个表格..。

代码语言:javascript
复制
ls3 = ["1-4","2-3","3-2","4-1"]

是否有可能做到这一点?注意数字之间的减号。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-06 00:08:32

所以美学家的回答是对的。我只想补充一些解释。

代码语言:javascript
复制
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']

[someaction(x) for x in somelist]将返回一个列表,其中每个元素都是在somelist中对应的x上执行的someaction()。这被称为列表理解。

在本例中,somelistzip(ls1,ls2),它创建[(ls1[0], ls2[0]), (ls1[1], ls2[1]), ...]

所以zip(ls1,ls2)返回[('1', '4'), ('2', '3'), ('3', '2'), ('4', '1')]

someaction()'-'.join(),它的作用是它需要一个可迭代的字符串序列,并将它们与中间的字符串'-'连接起来。所以你可以做' to '.join(x)['1 to 4', '2 to 3', ...]

票数 2
EN

Stack Overflow用户

发布于 2015-01-05 23:45:14

代码语言:javascript
复制
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']
票数 7
EN

Stack Overflow用户

发布于 2015-01-06 00:10:38

代码语言:javascript
复制
>>> [ "{}-{}".format(ls1[x],ls2[x]) for x in range(len(ls1))]
['1-4', '2-3', '3-2', '4-1']

使用地图:

代码语言:javascript
复制
>>> map("{}-{}".format,ls1,ls2)
['1-4', '2-3', '3-2', '4-1']

使用itertools.strmap:

代码语言:javascript
复制
>>> list(itertools.starmap("{}-{}".format,zip(ls1,ls2)))
['1-4', '2-3', '3-2', '4-1']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27789822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档