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

时间:2018-01-30 07:06:55

标签: python list max

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

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


list1 = []
for i in x:
    x.pop(max(x))
    #poped item saved to list1
print(list1)

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

4 个答案:

答案 0 :(得分:3)

您需要提供列表中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)

答案 1 :(得分:1)

在python pop方法中,参数是index,但是你传递了值。

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

试试这个。

答案 2 :(得分:0)

您可以尝试:

>>> 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]

答案 3 :(得分:0)

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]