簡體   English   中英

在循環前使用枚舉時,如何獲得空列表?

[英]How can I get a empty list when I use the enumerate before the loop?

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

但是當我使用下面的枚舉函數時,我得到了一個薪水數據,它是一個空列表,而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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM