python - If in List vs For 循环(性能)

标签 python performance

我很想知道 Python 中什么更快

假设我有一个列表

myList = ['a', 'b', 'c', 'd', 'e']

我有两种方法来检查某个项目是否在列表中。

if item in myList:
    # doSomthing()

for element in myList:
    if element == item:
        # doSomething()

我知道第一种方法更“pythonic”,但在性能方面有区别吗?

最佳答案

在 jupyter notebook 中测试,第一个选项对于字符串搜索来说明显更快:

设置(来自 this question ):

rndm=''.join(choices(string.ascii_uppercase + string.digits, k=100000))

测试:

%timeit 'a' in rndm
26.2 µs ± 485 ns per loop

%%timeit 
for let in rndm: 
    if let=='a': 
        break
2.42 ms ± 73.7 µs per loop

注意:即使我们从 rndm 中创建一个 set() 并计算搜索时间,它仍然只会以 1.14 ms ± 26.9 µs 的速度出现循环

关于python - If in List vs For 循环(性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52935060/

相关文章:

python - HTML Django 1.10 中模型中的图像

c# - 使用openCV和OCR从不规则表格中提取数据

python - 拆酸危害

c# - 引入 CLR 类型(类或接口(interface))的性能成本是多少?

python - 当一个条件满足一个值对和一个列表时创建一个新列表

python - 为什么 PyTypeObject 有这么多特定的成员来实现特定的功能

mysql - MS Access - 尝试匹配列表之间的不同标准

sql - 加速 SQL Server 存储过程

sql - 在Oracle中更快 'select distinct thing_id,thing_name from table1'

sql - 如何获取存储过程的时间(以毫秒为单位)