我想在列表中获取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()。感谢。
答案 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]