Python I';我试图简化我的代码,但答案是错误的
这是我的代码(没错): 但我想这样做(蟒蛇): 所以。。执行此操作时,我的代码只需打印: 打印(l.删除(最大(l))) 没有 有什么问题吗?我只想简化我的代码 任务:我有一个列表,我想打印第二个最高分。看一下列表。Python I';我试图简化我的代码,但答案是错误的,python,Python,这是我的代码(没错): 但我想这样做(蟒蛇): 所以。。执行此操作时,我的代码只需打印: 打印(l.删除(最大(l))) 没有 有什么问题吗?我只想简化我的代码 任务:我有一个列表,我想打印第二个最高分。看一下列表。list.remove方法是一种就地修改列表的方法。也就是说,它修改了您调用它的列表,而不是返回一个包含您想要的更改的新列表 由于此函数不返回任何内容,因此打印l.remove()将显示“无”。要在删除元素的情况下打印列表,您必须坚持使用原始代码。查看列表。list.remove方法
list.remove
方法是一种就地修改列表的方法。也就是说,它修改了您调用它的列表,而不是返回一个包含您想要的更改的新列表
由于此函数不返回任何内容,因此打印l.remove()
将显示“无”。要在删除元素的情况下打印列表,您必须坚持使用原始代码。查看列表。list.remove
方法是一种就地修改列表的方法。也就是说,它修改了您调用它的列表,而不是返回一个包含您想要的更改的新列表
由于此函数不返回任何内容,因此打印
l.remove()
将显示“无”。要在删除元素的情况下打印列表,必须使用原始代码。使用set()
将地图对象转换为集合,使用sorted()
转换为排序列表,并使用[-2]
获取最后一个元素:
print(sorted(set(arr))[-2])
在我看来,这比删除max然后打印新的max更具python风格,因为它更清晰,并且只需较少的步骤即可实现。使用
set()
将地图对象转换为集合,使用sorted()
转换为排序列表,并使用[-2]
获取最后一个元素:
print(sorted(set(arr))[-2])
在我看来,这比删除max然后打印新的max更具python风格,因为它更清晰,而且只需较少的步骤即可实现。您应该使用a而不是排序。您可以在O(n)时间内构建一个堆 并在O(n)时间内返回
k
第四大项(对于任何常数k
);排序需要O(n lgn)时间
你应该使用a而不是排序。您可以在O(n)时间内构建一个堆
并在O(n)时间内返回k
第四大项(对于任何常数k
);排序需要O(n lgn)时间
您正在打印
list.remove()
的返回值,它总是None
。仅供参考,set
通常是无序的,因此在将其转换为set
之前排序arr
是相当多余的。想想看:l.remove(max(l))
“知道吗?”是否返回l
中的下一个最大值?或者您甚至可能期望它返回什么值?排序需要O(n lg n)个时间;您可以使用堆在O(n)时间内获得第二个(或任何k
th,对于常量k
)最大的项。此代码中n
的意义是什么?您正在打印列表的返回值。remove()
,它总是无。仅供参考,集
通常是无序的,因此,在将arr
转换为set
之前对其进行排序是相当多余的。想想看:l.remove(max(l))
“know”如何返回l
中的下一个最大值?或者您甚至可能期望它返回什么值?排序需要O(n lg n)个时间;您可以使用堆来获得O(n)时间内第二个(或任何k
th,常数k
)最大的项。这段代码中n
的意义是什么?我正在尝试,但如果我的列表中有以下元素:[2,3,6,6,5]我的标准值是:3@WSS我的错,请再试一次!我正在尝试,但如果我的列表中有以下元素:[2,3,6,6,5],我的标准值是:3@WSS我的错,请再试一次!谢谢你,伙计,我读到了。。有意义的回报给我“没有”谢谢你,伙计,我读到了。。有意义的回报给我'没有'多一点的背景是受欢迎的。什么是堆?(因为它不是一个日常的标准类型)它比OP的方法有什么好处,等等。另外,map
返回一个迭代器,因此我认为需要list()
。@WSS一个简单的注释就足够了;不需要提供屏幕截图的神秘链接。欢迎提供更多上下文。什么是堆?(因为它不是一个日常的标准类型)它比OP的方法有什么好处,等等。另外,map
返回一个迭代器,因此我认为需要list()
。@WSS一个简单的注释就足够了;不需要提供屏幕截图的神秘链接。
print(sorted(set(arr))[-2])
import heapq
n = int(input())
arr = [int(x) for x in input.split()]
heapq.heapify(arr) # In-place; does not return the heapified list.
print(heapq.nlargest(2, arr)[-1])