gpt4 book ai didi

python - 检查 value 是否是给定数量的值之一 - set vs. tuple vs. list

转载 作者:行者123 更新时间:2023-12-01 09:12:09 25 4
gpt4 key购买 nike

我有一个 value并且想要检查该值是否是(例如)'5' , 'test''#+*' .
据我所知,我有几个选择:

 value in ['5', 'test', '#+*']  # list
value in ('5', 'test', '#+*') # tuple
value in {'5', 'test', '#+*'} # set

这三个陈述是等效的还是有区别的?

我并不真正关心性能,因为检查将始终与 < 10 个元素进行比较。

最佳答案

它们是有区别的。一、可变数据结构listset规模会更大,因为它们是可增长的,并且需要与它们相关联的开销。 tuple是不可变的,因此在内存中更小。
其次,检查 tuple 中的成员资格或 list是一个 O(N) 操作,也就是说,它取决于数据结构的大小,因为它必须从开始迭代到所需元素或结构结束,以先到者为准。 set不需要这样做,因为它正在检查散列并且查找不依赖于 set 的大小。 .
python 的方式?这取决于。如果您在循环中进行此测试,则 set会更有意义,因为即使对于少量元素,时差也很明显:

❰mm92400❙~❱✔≻ python -m timeit -s 'x = list(range(9))' '8 in x'
10000000 loops, best of 3: 0.0979 usec per loop
❰mm92400❙~❱✔≻ python -m timeit -s 'x = tuple(range(9))' '8 in x'
10000000 loops, best of 3: 0.0968 usec per loop
❰mm92400❙~❱✔≻ python -m timeit -s 'x = set(range(9))' '8 in x'
10000000 loops, best of 3: 0.0278 usec per loop
否则,只是一次性的, tuple内存较小,所以我可能会走那条路

关于python - 检查 value 是否是给定数量的值之一 - set vs. tuple vs. list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59376163/

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