0

私は調査を行い、問題の解決に非常に近づいていますが、フィニッシュラインを越えるには少し助けが必要です!

私は2つのリストを持っています:

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')] 

だから私は近いですが、適切にフォーマットする方法がわかりません。

ありがとう

4

4 に答える 4

5

Ashwini のソリューションに加えてmap、その引数に対して実行される暗黙の圧縮を利用できます。

>>> ', '.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
于 2013-06-27T09:35:38.600 に答える
0

これを試して

','.join([Countries[i]+'('+Base[i]+')' for i in range(len(Countries))])
于 2013-06-27T10:00:39.253 に答える
0

このメソッドはマップを使用しますが、別の結合と文字列の連結を優先して文字列の書式設定を放棄します。

print ', '.join(map(lambda a: ' ('.join(a)+')', zip(Countries, Base))) #outputs string

print map(lambda a: ' ('.join(a)+')', zip(Countries, Base)) #outputs list
于 2013-06-27T09:41:14.763 に答える