Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python列表中获得5个最接近的整数?_Python_List_Algorithm_Sorting_Closest - Fatal编程技术网

如何从python列表中获得5个最接近的整数?

如何从python列表中获得5个最接近的整数?,python,list,algorithm,sorting,closest,Python,List,Algorithm,Sorting,Closest,我想得到5个最接近100的整数,比如100,99,98,101,102 我使用了以下方法,但没有得到预期的结果 myList = [95,96,97,98,99,100,101,102,103,104,105] for i in myList: print(min(myList, key=lambda x:abs(x-100))) myList.remove(i) 输出: 100 100 100 100 100 100 95 97 99 101 103 105 然后我做了这

我想得到5个最接近100的整数,比如100,99,98,101,102 我使用了以下方法,但没有得到预期的结果

myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in myList:
    print(min(myList, key=lambda x:abs(x-100)))
    myList.remove(i)
输出:

100
100
100
100
100
100
95
97
99
101
103
105
然后我做了这个:

myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in myList:
    print(min(myList, key=lambda x:abs(x-i)))
    myList.remove(i)
输出:

100
100
100
100
100
100
95
97
99
101
103
105
在这种情况下,超过95、97和105;98、96和102最接近;但是,这些数字被跳过

请看一看并提出建议。
谢谢:)

您只需打印最小值(相对于您的定义),然后只需弹出下一个元素。相反,可以这样做:

myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in range(5):  # we want 5 elements
    best = min(myList, key=lambda x: abs(100-x))
    myList.remove(best)
    print(best)
上面印着:

100
99
101
98
102
但是有一个更简单的方法可以得到你想要的。只需对其进行排序并获取前n个元素:

# prints [100, 99, 101, 98, 102]
print(sorted(myList, key=lambda x: abs(100-x))[:5])


有一个更好的(您只是打印最小值(相对于您的定义),但是您只是弹出下一个元素。相反,请执行以下操作:

myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in range(5):  # we want 5 elements
    best = min(myList, key=lambda x: abs(100-x))
    myList.remove(best)
    print(best)
上面印着:

100
99
101
98
102
但是有一种更简单的方法可以得到你想要的东西。只需对它进行排序并获取前n个元素:

# prints [100, 99, 101, 98, 102]
print(sorted(myList, key=lambda x: abs(100-x))[:5])

有更好的(