Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中删除最大值和最小值,而不复制列表_Python_List_Subset - Fatal编程技术网

Python 从列表中删除最大值和最小值,而不复制列表

Python 从列表中删除最大值和最小值,而不复制列表,python,list,subset,Python,List,Subset,假设我有这个清单 x = [2, 4, 1, 11] 如果我只想保持最大值和最小值,我可以这样做 [i for i in x if i == max(x) or i == min(x)] (返回[1,11]) 但是为什么不删除最大值和最小值呢 [i for i in x if i != max(x) or i != min(x)] (返回[2,4,1,11])您想要的是 not (i == max(x) or i == min(x)) 它简化为(注意和而不是或) 要理解为什么要看 最后,

假设我有这个清单

x = [2, 4, 1, 11]
如果我只想保持最大值和最小值,我可以这样做

[i for i in x if i == max(x) or i == min(x)]
(返回
[1,11]

但是为什么不删除最大值和最小值呢

[i for i in x if i != max(x) or i != min(x)]
(返回
[2,4,1,11]

您想要的是

not (i == max(x) or i == min(x))
它简化为(注意
而不是

要理解为什么要看

最后,您的代码效率很低,因为它每次都重新计算
min
max
。您可以改为:

extremes = [min(x), max(x)]
without_extremes = [i for i in x if i not in extremes]

如果您这样做,阅读起来会更简单:

x.删除(最大(x))
x、 移除(最小(x))

i
不能同时为max和min,除非列表只有一个元素。根据德摩根定律,在条件之间使用
,而不是
,或
而不是
(i==max(x)或i==min(x))
。如果所有元素相等,也可以同时使用max和min。不过,每个元素只删除一个。如果列表大小为1,则会崩溃。
extremes = [min(x), max(x)]
without_extremes = [i for i in x if i not in extremes]