salary_data是python中的一个列表。当我在循环中使用枚举函数时,一切顺利。
##salary_data = enumerate(salary_data)
max_label = [i for i,x in enumerate(salary_data) if x==max(salary_data)]
print max_label
但是当我使用下面的枚举函数时,我得到一个salary_data是一个空列表,而ValueError:max()arg是一个空序列。我不知道为什么。
salary_data = enumerate(salary_data)
max_label = [i for i,x in salary_data if x==max(salary_data)]
print max_label
答案 0 :(得分:3)
enumerate(salary_data)
是一个迭代器,因为你将它包装在enumerate
中。这意味着当您在其上调用max
时(除了错误的最大值之外),它将会耗尽(空)。
您应该计算最大前期(避免重新计算),然后您还可以迭代enumerate
d数据:
max_ = max(salary_data) # avoids repeated maximum calculation in the loop
salary_data_enumerated = enumerate(salary_data) # other variable name, for readability
max_label = [i for i, x in salary_data_enumerated if x==max_]