gpt4 book ai didi

python - 使用函数 min() 从列表中删除较小的值

转载 作者:行者123 更新时间:2023-12-02 18:41:20 24 4
gpt4 key购买 nike

简而言之,这就是计划:我想从 Python 列表中删除最小值。我的方法是创建一个新列表 trimmed ,它基本上是原始副本的副本,但条件如下:

仅当值不等于min()时才将其添加到trimmed。像这样:

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 检查最小值,而不是值本身 xenumerate 返回 (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]

关于python - 使用函数 min() 从列表中删除较小的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67976606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com