使用函数 min() 从列表中删除较小的值
Removing the smaller value from a list using function min()
简而言之,计划如下:我想从 Python 列表中删除最小值。我的方法是创建一个新列表 trimmed
,它基本上是原始列表的副本,但条件如下:
仅当值不等于 min() 时才将其添加到修剪。像这样:
lis=[]
trimmed =[]
n = int(input("Enter number of elements : "))
for i in range(0, n):
elements = int(input("Type a number: "))
lis.append(elements) # adding the elements
# "trimmed" appends a new copy of "lis" removing the smaller value
trimmed = [x for i,x in enumerate(lis) if i != min(lis)]
print(trimmed)
问题是,有时似乎通过删除特定索引中的值而不是删除实际较小的值来构建 trimmed
。例如。我刚刚输入了 5 ,2 ,6 和 9。它应该 ramv 删除第二个。相反,它打印出 [5, 2, 9]
这是因为您的 if i != min(lis)
根据 index 变量 i
检查最小值而不是值本身 x
。 enumerate
返回 (index, val)
对,即此处的 (i, x)
。碰巧 min(lis)
是 2,所以每当 i
达到 2 时,该值将被修剪,因此您看到 6 消失了(在第二个索引处)。修复是与 x
:
进行比较
trimmed = [x for i,x in enumerate(lis) if x != min(lis)]
应该做。
但更好的是,让我们只计算一次最小值(以上计算多次):
minimum = min(lis)
trimmed = [x for i,x in enumerate(lis) if x != minimum]
此外,您似乎根本不需要 i
:
minimum = min(lis)
trimmed = [x for x in list if x != minimum]
索引与最小值无关。不用一一列举了。
minval = min(lis)
trimmed = [x for x in lis if x != minval]
简而言之,计划如下:我想从 Python 列表中删除最小值。我的方法是创建一个新列表 trimmed
,它基本上是原始列表的副本,但条件如下:
仅当值不等于 min() 时才将其添加到修剪。像这样:
lis=[]
trimmed =[]
n = int(input("Enter number of elements : "))
for i in range(0, n):
elements = int(input("Type a number: "))
lis.append(elements) # adding the elements
# "trimmed" appends a new copy of "lis" removing the smaller value
trimmed = [x for i,x in enumerate(lis) if i != min(lis)]
print(trimmed)
问题是,有时似乎通过删除特定索引中的值而不是删除实际较小的值来构建 trimmed
。例如。我刚刚输入了 5 ,2 ,6 和 9。它应该 ramv 删除第二个。相反,它打印出 [5, 2, 9]
这是因为您的 if i != min(lis)
根据 index 变量 i
检查最小值而不是值本身 x
。 enumerate
返回 (index, val)
对,即此处的 (i, x)
。碰巧 min(lis)
是 2,所以每当 i
达到 2 时,该值将被修剪,因此您看到 6 消失了(在第二个索引处)。修复是与 x
:
trimmed = [x for i,x in enumerate(lis) if x != min(lis)]
应该做。
但更好的是,让我们只计算一次最小值(以上计算多次):
minimum = min(lis)
trimmed = [x for i,x in enumerate(lis) if x != minimum]
此外,您似乎根本不需要 i
:
minimum = min(lis)
trimmed = [x for x in list if x != minimum]
索引与最小值无关。不用一一列举了。
minval = min(lis)
trimmed = [x for x in lis if x != minval]