Python 3.x 假设我试图用python将集合转换为列表,为什么';生成器对象不可调用';出现
我有一个列表Python 3.x 假设我试图用python将集合转换为列表,为什么';生成器对象不可调用';出现,python-3.x,Python 3.x,我有一个列表l,其中包含[1,2,5,4,3,6,6] 我运行一个set(l),我想得到序列中的第二大,所以我希望使用类似于list(set(l)).sort()的东西[-2]。但是,当我尝试此操作时,我收到一条消息说“generator对象不可调用”。除了您很可能重新定义了列表或集合, ist方法sort就地进行排序,并且不返回任何值-因此您将得到一个 “非类型”对象不可下标 当你把剩下的工作做好后就出错了 因此,从干净的Python会话开始: a = [5,7, 9, 10, 2, 3, 1
l
,其中包含[1,2,5,4,3,6,6]
我运行一个
set(l)
,我想得到序列中的第二大,所以我希望使用类似于list(set(l)).sort()的东西[-2]
。但是,当我尝试此操作时,我收到一条消息说“generator对象不可调用”。除了您很可能重新定义了列表
或集合
,
ist方法sort
就地进行排序,并且不返回任何值-因此您将得到一个
“非类型”对象不可下标
当你把剩下的工作做好后就出错了
因此,从干净的Python会话开始:
a = [5,7, 9, 10, 2, 3, 10]
b = set(a)
print(sorted(list(b))[-2])
将起作用。如注释中所述,列表/集合先前已重新定义,因此出现错误。 我在python控制台的一个新实例中运行了以下代码
n = int(input())
l=[int(input()) for _ in range(n)]
print(sorted(list(set(l)))[-2])
假设输入是
[1,2,5,4,3,6,6]
,代码在序列上运行一个集合,然后继续将其转换为一个列表,之后可以进行索引我感觉您在代码的某个地方使用了集合
作为变量名。您所做的是错误的,但这不是您应该得到的错误。你应该了解一下Nonetype
。尝试:排序(列表(集合(l))[-2]
。另外,请确保没有名为set
的generator
对象。list
也可能已被重新定义。