if list_1 > 20:
list_1-5
我试图为列表中超过20的每个索引减去5。谢谢您的帮助:)
使用列表推导来构建新列表,并将更改应用于所有超过20的值:
list_1 = [v - 5 if v > 20 else v for v in list_1]
该表达式v - 5 if v > 20 else v
使用条件表达式生成v
自身,v
如果大于20,则减去负5。
演示:
>>> list_1 = [20, 19, 24, -10, 100]
>>> [v - 5 if v > 20 else v for v in list_1]
[20, 19, 19, -10, 95]
您实际上不需要事先进行测试;如果要测试列表中是否存在超过20的值,无论如何都需要对列表进行遍历; 如果没有超过20的值,则列表推导将生成列表的副本,并且不进行任何更改。
如果必须测试,请将该any()
函数与生成器表达式一起使用;当找到一个这样的值时,这至少会中止迭代:
if any(v > 20 for v in list_1):
# there is at least one value in list_1 that is greater than 20
list_1 = [v - 5 if v > 20 else v for v in list_1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句