2024-05-09 16:30:28 发布
网友
我对Python并不完全熟悉,但我对学习/保持良好的实践感兴趣,同时我也在发展我的技能。
我想从数字列表中删除高值和低值,我知道该怎么做,但我想知道是否有更好/更可取的方法来做这件事。
mylist = [1, 4, 0, 3, 2] mylist.sort() #[0, 1, 2, 3, 4] trimmed = mylist[1:-1] #[1, 2, 3]
我得到了想要的答案,但我得到了正确的答案吗?
如果您不想更改项目的顺序,下面是另一种方法:
mylist = [1, 4, 0, 3, 2] mylist.remove(max(mylist)) mylist.remove(min(mylist))
假设high/low在列表中没有任何重复项,或者如果有,可以只删除其中一个。
这将需要2-4次遍历列表:2次查找最大值和最小值,最多2次查找要删除的值(如果它们恰好都在列表的末尾)。您可以通过编写一个Python循环来将其减少为一个,以便在一次传递中找到max和min(并记住每个传递的索引,以便可以在循环之后按索引删除项)。但是,min()和max()是用C实现的,因此用Python代码替换它们可能会导致更低的性能,即使这样可以减少传递次数。
min()
max()
如果您不想更改项目的顺序,下面是另一种方法:
假设high/low在列表中没有任何重复项,或者如果有,可以只删除其中一个。
这将需要2-4次遍历列表:2次查找最大值和最小值,最多2次查找要删除的值(如果它们恰好都在列表的末尾)。您可以通过编写一个Python循环来将其减少为一个,以便在一次传递中找到max和min(并记住每个传递的索引,以便可以在循环之后按索引删除项)。但是,
min()
和max()
是用C实现的,因此用Python代码替换它们可能会导致更低的性能,即使这样可以减少传递次数。相关问题 更多 >
编程相关推荐