Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Python_List_Max - Fatal编程技术网

将列表中的最大数字弹出到另一个列表,python

将列表中的最大数字弹出到另一个列表,python,python,list,max,Python,List,Max,我想在一个列表中获取max()numer,然后将其弹出到另一个列表(list1) 这是我的方法,但我得到错误“弹出索引超出范围”。我做错了什么?我真的不知道如何进一步弹出一个项目并将其返回到一个空列表中。结果应该是一个列表1,其中的数字从最高到最低。请不要发布任何其他内置函数的算法,如sort()。谢谢。您需要在要弹出的列表中提供max元素的索引 x = [66,1,4,3,6,55] list1 = [x.pop(x.index(max(x)))] print(list1) 输出 [66]

我想在一个列表中获取max()numer,然后将其弹出到另一个列表(list1)


这是我的方法,但我得到错误“弹出索引超出范围”。我做错了什么?我真的不知道如何进一步弹出一个项目并将其返回到一个空列表中。结果应该是一个列表1,其中的数字从最高到最低。请不要发布任何其他内置函数的算法,如sort()。谢谢。

您需要在要弹出的列表中提供max元素的索引

x = [66,1,4,3,6,55]
list1 = [x.pop(x.index(max(x)))]
print(list1)
输出

[66]
评论请求:

x = [66,1,4,3,6,55]
list1 = []
while x:
    list1.append(x.pop(x.index(max(x))))
print(list1)
您可以尝试:

>>> x = [66,1,4,3,6,55]
>>> list_popped = []
>>> list_popped.append(x.pop(x.index(max(x))))
>>> print list_popped
[66]
>>> print x
[1, 4, 3, 6, 55]

List pop方法将元素的索引作为参数。您正在提供项目本身。在您的示例中,第一个值是66,您正在尝试pop(66),在第66个索引处没有项目(列表的长度小于66)

请尝试以下代码

x = [66,1,4,3,6,55]

list1 = []
for i in range(len(x)):
    max_val = max(x)
    max_val_index = x.index(max_val)
    list1.append(max_val)
    x.pop(max_val_index)
print(list1)

输出:[66、55、6、4、3、1]

在python中,pop方法的参数是索引,但您正在传递值

x = [66,1,4,3,6,55]
list1 = []
for i in range(len(x)):
    list1.append(x.pop(x.index(max(x))))
print(list1)

试试这个。

看起来你只是想按相反的顺序(从最大到最小)对数组排序,不是吗?假设您的代码中有一个循环,则会要求您将弹出的项添加到列表_1中。如果我想把x列表中剩下的每一个最大值都放到列表1中,我该怎么做?@AdamBeňko更新了解决方案。你可以用一段时间,非常感谢。现在这一切对我来说都是有意义的:)您在回答中提供的代码相当于
list1=sorted(x,reverse=True)[:]
。另外,如果您只想创建列表的副本,为什么要使用昂贵的
index
max
函数来获取每个元素,而只需对结果列表进行排序?
x = [66,1,4,3,6,55]
list1 = []
for i in range(len(x)):
    list1.append(x.pop(x.index(max(x))))
print(list1)