我有一個包含整數的串列串列。例如,一行如下所示:
my_list = [11,11,10]
我想洗掉最大值,目的是保留 2 個最小值。
但是,當我運行此代碼時,它不僅會洗掉最大值,還會洗掉其重復項:
>>> [x for x in my_list if x!=max(my_list)]
Output: [10]
當串列中沒有重復項時,一切都按預期作業:
>>> my_list = [12,11,10]
>>> [x for x in my_list if x!=max(my_list)]
Output: [11, 10]
如何保留重復值?
uj5u.com熱心網友回復:
您可以將串列中的最大值傳遞給list.remove方法;它洗掉第一次出現的傳遞值。
>>> my_list.remove(max(my_list))
>>> my_list
[11, 10]
PS:這是一個可變操作,所以它改變了原始串列。
以上僅在重復最大值時才有效,您可以將其與您所做的結合起來:
if my_list.count(max(my_list)) == 1:
my_list = [i for i in my_list if i!=max(my_list)]
else:
my_list.remove(max(my_list))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360845.html
