gpt4 book ai didi

Python List-comprehension 和多次引用一个对象

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:17 24 4
gpt4 key购买 nike

这是一个人为的示例,用于演示在 for 循环和列表推导中多次引用相同的字典项。首先,for 循环:

dict_index_mylists = {0:['a', 'b', 'c'], 1:['b', 'c', 'a'], 2:['c', 'a', 'b']}

# for-loop
myseq = []
for i in [0, 1, 2]:
interim = dict_index_mylists[i]
if interim[0] == 'b' or interim[1] == 'c' or interim[2] == 'a':
myseq.append(interim)

在 for 循环中,临时列表从字典对象中引用,然后在 if 条件中多次引用这可能有意义,尤其是在字典非常大和/或存储时。再一次,“临时”引用可能是不必要的,因为 Python 字典针对性能进行了优化。

这是for循环的列表理解:

# list-comprehension
myseq = [dict_index_mylists[i] for i in [0, 1, 2] if dict_index_mylists[i][0] == 'b' or dict_index_mylists[i][1] == 'c' or dict_index_mylists[i][2] == 'a']

问题是:

一个。列表理解是对字典项进行多次引用,还是引用并保留一个本地“临时”列表以供处理?

在同一字典项上包含多个条件且字典非常大的情况下,最佳列表理解表达式是什么?

最佳答案

您似乎只询问常见子表达式的优化。在您的列表理解中,它将多次索引到字典中。 Python 是动态的,很难知道像 dict_index_mylists[i] 这样的操作可能会产生什么副作用,因此 CPython 只是简单地执行您告诉它的次数。

PyPy 等其他实现使用 JIT 并可能优化掉子表达式,但很难确定它会提前做什么。

如果您非常在意性能,则需要对各种选项进行计时以查看哪个最佳。

关于Python List-comprehension 和多次引用一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com