【发布时间】:2018-11-05 23:01:51
【问题描述】:
由于没有更好的词,我就用了这个标题。
我想要的是能够做这样的事情:
>>> from random import randint
>>> fruits = [
... "Orange",
... "Banana",
... f"{randint(2,5)} Cherries",
... ]
>>> fruits[2]
'3 Cherries'
>>> fruits[2]
'5 Cherries'
>>> fruits[2]
'2 Cherries'
但是,字符串中的文字表达式在创建列表时被评估一次,并且每次访问它时都会给出相同的结果。
我想知道除了编写一些复杂的边缘情况处理之外,是否有更简单/更智能的方法来处理这个问题(我们毕竟是程序员;谁不喜欢编写漂亮的代码并且优雅而花哨?)。 我说的是边缘情况处理,因为我的 49 个字符串中只有 6 个需要这种“特殊”行为。
到目前为止,我尝试的是从 randint 调用中创建一个 lambda 函数,但这并没有帮助;同样的结果。 也许这是惰性评估的一个案例,但我需要一些关于如何(或是否?)将它与列表一起使用的指导。
【问题讨论】:
标签: python lambda lazy-evaluation f-string