if list_1 > 20:
list_1-5
我试图在列表中超过20的每个索引减去5.感谢您的帮助:)
答案 0 :(得分:0)
使用list comprehension构建一个新列表,其中的更改应用于超过20的所有值:
list_1 = [v - 5 if v > 20 else v for v in list_1]
表达式v - 5 if v > 20 else v
使用conditional expression生成v
本身,如果大于20,则减去v
减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()
function和generator expression;这至少会在找到一个这样的值时中止迭代:
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]
答案 1 :(得分:0)
您应用列表推导从每个元素中减去五,其中大于二十的条件为真。
>>> list_1 = [1, 22, -15, 16, 17]
>>> [x - 5 if x > 20 else x for x in list_1]
[1, 17, -15, 16, 17]
这相当于,但比...快一点。
>>> list_1 = [1, 22, -15, 16, 17]
>>> result = []
>>> for x in list_1:
... if x > 20:
... x -= 5
... result.append(x)
...
>>> result
[1, 17, -15, 16, 17]
答案 2 :(得分:0)