Mas*_*ran 0 python lambda functional-programming list-comprehension
假设我有一个以下形式的列表:
mylist = [5, 8, 40, 90, 3, 100, 79, 10, 10]
我想找到列表中最大值的 80% 以内的元素索引。我可以用几个循环来完成它,但我想了解是否有更实用的方法来完成它。这是我用过的:
max_nr = max(mylist)
all_max = list(filter(lambda y : y > max_nr*0.8, mylist))
是否有下一步(或单个步骤)与map或filter可以说:遍历列表,并仅保留那些遵守大于数字的约束的元素的索引。
我正在寻找应用第三步的替代方法:
    all_max_index = [mylist.index(i) for i in all_max]
您可以使用enumerate然后解压索引以及列表理解中的数字来获取索引。
>>> indices = [i for i, num in enumerate(mylist) if num > max_nr * 0.8]
>>> indices
[3, 5]