3 回答
TA贡献1752条经验 获得超4个赞
标准min函数返回列表中的最小数字。标准remove函数从列表中删除值为x的项目(不是第x个项目)。将这两者结合起来,您只需要这样:
import random
dice = [random.randint(1, 6) for i in range(5)]
print (dice)
dice.remove(min(dice))
dice.remove(min(dice))
print (dice)
TA贡献1824条经验 获得超8个赞
另一种方法是使用heapq模块提供的工具。heapq 模块提供了堆,它的第一个元素总是最小的*数据结构。
要获得您想要的结果,请堆化您的列表并弹出两次以删除两个最低值。
>>> import heapq
>>> import random
>>> scores = [random.randint(1, 6) for _ in range(5)]
>>> scores
[6, 4, 3, 5, 2]
>>> heapq.heapify(scores)
>>> # First value is the smallest
>>> scores
[2, 4, 3, 5, 6]
>>> heapq.heappop(scores)
2
>>> # First value is the smallest
>>> scores
[3, 4, 6, 5]
>>> heapq.heappop(scores)
3
>>> scores
[4, 5, 6]
您还可以使用heapq.nlargest函数:
>>> scores = [random.randint(1, 6) for _ in range(5)]
>>> scores
[3, 5, 1, 4, 5]
>>> heapq.nlargest(3, scores)
[5, 5, 4]
*从技术上讲,这是一个最小 堆;也可能有max heaps,其中第一个元素是最大/最大的。
TA贡献1784条经验 获得超8个赞
内置的 min() 函数可用于隔离最小数。
这样的事情就足以从列表中删除两个最低值
deletions = 0
while deletions <= 2:
deletions +=1
lowest_val = min(dice)
dice.remove(lowest_val)
添加回答
举报