【发布时间】:2015-09-26 13:19:34
【问题描述】:
我要翻这个名单:
['1','2','3','4']
进入这个字符串:
"%(1)s, %(2)s, %(3)s, %(4)s"
我怎样才能做到这一点,最好在 ONE LINE 中?
【问题讨论】:
-
这与嵌入式设备无关。
-
我投票结束这个问题,因为这不是一个代码编写服务
我要翻这个名单:
['1','2','3','4']
进入这个字符串:
"%(1)s, %(2)s, %(3)s, %(4)s"
我怎样才能做到这一点,最好在 ONE LINE 中?
【问题讨论】:
使用string formatting、str.join() 和list comprehension:
', '.join(['%({})s'.format(i) for i in inputlist])
演示:
>>> inputlist = ['1','2','3','4']
>>> ', '.join(['%({})s'.format(i) for i in inputlist])
'%(1)s, %(2)s, %(3)s, %(4)s'
请参阅 List comprehension without [ ] in Python 为什么在这里使用列表推导而不是生成器表达式更好。
【讨论】:
join 可以带一个生成器。无需先创建list。
str.join() 方法将生成器转换为列表,因为它必须解析内容两次(计算长度,然后生成输出)。通过使用列表推导,您可以获得一点性能。见list comprehension without [ ], Python
join)。我想知道这是否会随着列表内容而改变。
str.join(),列表理解更快;它不会随内容而改变,这是列表推导式和生成器之间的性能差异加上必须将后者转换为列表 *无论如何 在这里有所不同。