Python:合并两个列表并将它们显示为字符串

我已经完成了研究,已经非常接近解决我的问题,但是我需要一点帮助才能越过终点!

我有两个清单:

Countries = ["Germany", "UK", "France", "Italy"]
Base = ["2005","1298",1222","3990"]

预期结果:

"Germany (2005)", "UK (1298)", "France (1222)", "Italy (3990)"

我的剧本:

zipped = zip(Countries, Base)

结果:

[('Germany', '2005')", ('UK', '1298'), ('France', '1222'), ('Italy', '3990')]

所以我接近了,但是我不知道如何正确格式化它。


肥皂起泡泡
浏览 270回答 3
3回答

凤凰求蛊

您已经快到了,只需要使用字符串格式即可:>>> ["{} ({})".format(x,y) for x,y in zip(Countries, Base)]['Germany (2005)', 'UK (1298)', 'France (1222)', 'Italy (3990)']用途str.join:>>> print ", ".join('"{} ({})"'.format(x,y) for x,y in zip(Countries, Base))"Germany (2005)", "UK (1298)", "France (1222)", "Italy (3990)"使用itertools.izip的内存有效的解决方案。

青春有我

除了Ashwini的解决方案之外,您还可以利用map对其参数执行的隐式zip压缩。>>> ', '.join(map('"{} ({})"'.format, Countries, Base))'"Germany (2005)", "UK (1298)", "France (1222)", "Italy (3990)"'timeit 结果表明,该解决方案比Ashwini提出的解决方案更快:>>> from timeit import Timer as t>>> t(lambda: ', '.join(map('"{} ({})"'.format, Countries, Base))).timeit()4.5134528969464>>> t(lambda: ", ".join(['"{} ({})"'.format(x,y) for x,y in zip(Countries, Base)])).timeit()6.048398679161739>>> t(lambda: ", ".join('"{} ({})"'.format(x,y) for x,y in zip(Countries, Base))).timeit()8.722563482230271

胡说叔叔

此方法使用map,但放弃了字符串格式,而采用了另一种联接和字符串连接:print ', '.join(map(lambda a: ' ('.join(a)+')', zip(Countries, Base))) #outputs stringprint map(lambda a: ' ('.join(a)+')', zip(Countries, Base)) #outputs list
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python