gpt4 book ai didi

python - 列表理解中的 index(max(my_list)) 给出最大值的所有实例,而不仅仅是第一次出现

转载 作者:行者123 更新时间:2023-12-01 02:23:20 25 4
gpt4 key购买 nike

考虑以下代码片段 -->

li = [3,1,2,3]
print([x+99 if li.index(x)!=li.index(max(li)) else x-(99*(len(li)-1)) for x in li ])

我期望的输出是:

[-294, 100, 101, 102]

但是运行程序的实际输出是:

[-294, 100, 101, -294]

为什么我得到列表中最大值的两个实例,而不是仅第一次出现?

列表推导式究竟是如何评估的以及它如何影响我程序中的输出?

最佳答案

您的列表中有多个 3index 的实现是这样的,它只查找传递给它的值第一次出现的索引。相反,请使用枚举:

li = [3,1,2,3]
l1 = [x+99 if i!=li.index(max(li)) else x-(99*(len(li)-1)) for i, x in enumerate(li)]

输出:

[-294, 100, 101, 102]

关于python - 列表理解中的 index(max(my_list)) 给出最大值的所有实例,而不仅仅是第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47716897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com