【问题标题】:Constructing an f-string by for-looping through a list通过 for 循环遍历列表来构造 f 字符串
【发布时间】:2020-06-21 13:03:49
【问题描述】:

我想知道怎么做:

mylist = [10, 20, 30]

到这里:

'Quantity 10, quantity 20 quantity 30'

我知道可以这样做:

mystring = f"Quantity {mylist[0]}, quantity {mylist[1]} quantity {mylist[2]}"

但是有没有办法在构造 f-string 时合并一个 for 循环,而不必一一提供所有列表索引?

编辑:Quantityquantityquantity 恰好是同一个字符串,但它们可能是“Quantity 10, rank 20 kingdom and sovrenity 30”之类的任何内容。所以,数字之间会有不同的文字。

【问题讨论】:

  • 你想错了。你想要类似', '.join(f'quantity {i}' for i in mylist)...

标签: python list for-loop f-string


【解决方案1】:

你可以使用列表推导

", ".join([f"Quantity {x}" for x in mylist])

如果你关心大小写......

f"Quantity {mylist[0]}, " + ", ".join([f"quantity {x}" for x in mylist[1:]])

编辑:如果单词会有所不同,您需要压缩它们以便理解

words=["word1", "word2", "word3"]
numbers=[10,20,30]

', '.join([str(word) + " " + str(number) for word,number in zip(words,numbers)]).capitalize()

【讨论】:

  • 似乎mylist[1:] 部分只能与" " 连接
  • @tobias_k 不,自己运行。我的方式给出了与问题中完全相同的逗号样式
  • 不,OP 只使用一个逗号(不过,就像大写一样,这也可能是一个错字)
  • 如果要大写,最好使用str.capitalize:", ".join([f"Quantity {x}" for x in mylist]).capitalize()
  • @KJTHoward 我认为这行不通。请查看我在问题中所做的修改。
猜你喜欢
  • 2023-01-24
  • 2021-04-02
  • 2014-09-19
  • 1970-01-01
  • 2015-04-22
  • 2017-04-13
  • 2020-06-19
  • 1970-01-01
相关资源
最近更新 更多