删除列表中的最大值,保留重复项
Dropping max value in list, keeping duplicates
我有一个包含整数的列表列表。
例如,一行看起来像这样:
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]
如何保留重复值?
您可以将列表中的最大值传递给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))
我有一个包含整数的列表列表。 例如,一行看起来像这样:
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]
如何保留重复值?
您可以将列表中的最大值传递给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))