【问题标题】:How to turn a list into a complicated string如何将列表变成复杂的字符串
【发布时间】:2015-09-26 13:19:34
【问题描述】:

我要翻这个名单:

['1','2','3','4']

进入这个字符串:

"%(1)s, %(2)s, %(3)s, %(4)s"

我怎样才能做到这一点,最好在 ONE LINE 中?

【问题讨论】:

  • 这与嵌入式设备无关。
  • 我投票结束这个问题,因为这不是一个代码编写服务

标签: python string list


【解决方案1】:

使用string formattingstr.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)。我想知道这是否会随着列表内容而改变。
  • @Olaf:特定于str.join(),列表理解更快;它不会随内容而改变,这是列表推导式和生成器之间的性能差异加上必须将后者转换为列表 *无论如何 在这里有所不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多