由于缺乏更好的词,我用这个标题。
我想要的是能够做这样的事情:
>>> 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 函数,但这无济于事;同样的结果。也许这是惰性评估的一个案例,但我需要一些关于如何(或是否?)将它与列表一起使用的指导。