高效、干净地从列表/字典中删除元素?

问题描述 投票:0回答:1

这是一些示例代码:

shopping = ["milk", "eggs", "bananas"]

# slower? uses 2 O(n) operations
if "milk" in shopping:
    shopping.remove("milk")
    print("milk removed from shopping list.")
else:
    print("milk not in shopping list, not removing.")

# faster? Only uses one O(n) operation, right?
try:
    shopping.remove("milk")
    print("milk removed from shopping list.")
except:
    print("milk not in shopping list, not removing.")

这两种方法相比如何?一个比另一个快吗?使用字典(哈希图)会更快吗,因为查找元素的时间复杂度为 O(1)(如果内存密集一点(对吧?))?

python arrays time-complexity
1个回答
-1
投票

是的,try- except 会更快。

第一个脚本检查该项目是否在列表中,这是一项额外的检查,会使其速度变慢。

但是对于第二个脚本,它会立即将其删除,而无需额外检查。

© www.soinside.com 2019 - 2024. All rights reserved.