将列表中的最大数字弹出到另一个列表,python
我想在一个列表中获取max()numer,然后将其弹出到另一个列表(list1)将列表中的最大数字弹出到另一个列表,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]
这是我的方法,但我得到错误“弹出索引超出范围”。我做错了什么?我真的不知道如何进一步弹出一个项目并将其返回到一个空列表中。结果应该是一个列表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)