【发布时间】:2019-03-01 14:17:56
【问题描述】:
我有一个具有特定属性/变量的元素列表。首先,我需要检查所有属性是否具有相同的值,如果不是,我需要将每个元素的这个属性调整为最高值。 问题是,编写这样一个循环并不难。但是,我想知道最有效的方法是什么。
我当前的方法工作正常,但它循环遍历列表 2 次,有两个局部变量,感觉不够高效。
我简化了代码。这基本上就是我所拥有的:
biggest_value = 0
re_calc = 0
for _, element in enumerate(element_list):
if element.value > biggest_value :
biggest_value = element.value
re_calc += 1
if re_calc > 1:
for _, element in enumerate(element_list):
element.value = adjust_value(biggest_value)
element_list(_) = element
让我烦恼的是“re_calc”变量的必要性。对最大值的简单检查没什么大不了的。但此任务包括 3 个步骤: “比较属性--> 找到最大的价值--> 可能调整其他”。但是我不想循环这个列表 3 次。甚至没有我目前建议的两倍。
必须有更有效的方法。有任何想法吗?提前致谢。
【问题讨论】:
-
您可以添加示例输入和所需的输出吗?
-
adjust_value方法是什么? -
如果你不需要循环中每个项目的索引,你可以避免使用
enumerate并使用for element in element_list: -
@olinox14 ,这个问题有一个相当复杂的答案。检查的属性是一个整数,表示区分级别。所有元素都必须具有相同的区分度。因此,“adjust_value”方法采用该元素并将新设置的“细节”级别的元素离散化。我希望这能回答这个问题。
-
@iGian 不是。我只能说输入是一个元素列表,所需的属性是一个整数,所以 element.value 是一个整数
标签: python loops optimization python-3.6