3 回答

TA貢獻1825條經驗 獲得超4個贊
您已經快到了,只需要使用字符串格式即可:
>>> ["{} ({})".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的內存有效的解決方案。

TA貢獻1784條經驗 獲得超8個贊
除了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

TA貢獻1804條經驗 獲得超8個贊
此方法使用map,但放棄了字符串格式,而采用了另一種聯接和字符串連接:
print ', '.join(map(lambda a: ' ('.join(a)+')', zip(Countries, Base))) #outputs string
print map(lambda a: ' ('.join(a)+')', zip(Countries, Base)) #outputs list
添加回答
舉報