如何在元素列表中找到最小的数字?

时间:2019-03-19 16:04:18

标签: python python-3.x python-2.7 list

这是我的程序,

item_no = []
minimum = 1000
for i in range(5):
    input_no = int(input("Enter an item number: "))
    item_no.append(input_no)
for i in item_no:
    if i < minimum:
       minimum = i
small = item_no.index(minimum)
print (item_no[small])

示例输入:[5, 3, 3, 8, 9]

示例输出:3

如何更改程序以输出数组中两个或更多相同的最小数字的可能性?

示例输入:[2, 2, 2, 6, 5, 8, 9]

预期输出:[2, 2, 2]

应该使用Python 2.7 / 3中很少的内置函数来编写尽可能简单的程序。

3 个答案:

答案 0 :(得分:3)

使用the min() built in

item_no = [3,5,7,3,5,7,3,5,7,9]

min_val = min(item_no)    # what is the minimal value?

# print item with position
for i,v in enumerate(item_no):
    if v==min_val:
        print(f"{min_val} at position {i}")

# get all min values
all_mins = [i for i in item_no if i==min_val] 
print( all_mins )

输出:

3 at position 0
3 at position 3
3 at position 6
[3, 3, 3]

答案 1 :(得分:1)

欢迎!

这看起来有点像作业问题,所以我将给出提示而不是直接的答案。您已经有一个使用小于测试找到最低值的循环。您可以将其扩展为考虑当发现等于或等于先前的最小值的值时会发生什么。

另外,如果您的输入很大,例如[1500,2000,1800]?

答案 2 :(得分:1)

另一种变化。从列表中过滤掉所需的内容:

item_no = [3,5,7,3,5,7,3,5,7,9]

min_value = min(item_no)
print(list(filter(lambda x: x == min_value, item_no)))

# [3, 3, 3]