亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:合并兩個列表并將它們顯示為字符串

Python:合并兩個列表并將它們顯示為字符串

肥皂起泡泡 2021-03-31 13:34:19
我已經完成了研究,已經非常接近解決我的問題,但是我需要一點幫助才能越過終點!我有兩個清單: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')]所以我接近了,但是我不知道如何正確格式化它。
查看完整描述

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的內存有效的解決方案。


查看完整回答
反對 回復 2021-04-06
?
青春有我

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


查看完整回答
反對 回復 2021-04-06
?
胡說叔叔

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


查看完整回答
反對 回復 2021-04-06
  • 3 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號