如何在'if'语句中将列表与整数进行比较?蟒蛇

时间:2016-04-07 15:12:21

标签: python list if-statement

if list_1 > 20:

    list_1-5

我试图在列表中超过20的每个索引减去5.感谢您的帮助:)

3 个答案:

答案 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() functiongenerator 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)

您可以使用for循环和enumerate来执行此操作。

for i, number in enumerate(list_1):
    if number > 20:
        list_1[i] = number - 5

使用列表理解:

list_1 = [i-5 if i > 20 else i for i in list_1]

如果要创建新列表:

list_2 = []

for number in list_1:
    if number > 20:
        list_2.append(number-5)
    else:
        list_2.append(number)
相关问题