当我在循环之前使用枚举时如何获得空列表?

时间:2017-09-12 04:37:41

标签: python

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

1 个答案:

答案 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_]