【问题标题】:Deleting elements from a list if they do not follow 'if' 'or' statements如果元素不遵循 'if' 'or' 语句,则从列表中删除它们
【发布时间】:2017-02-01 16:02:52
【问题描述】:

我正在尝试删除列表中不需要的变量。我需要有两个条件:一个是确保我的数组中的值小于变量 A,另一个是确保它们不等于另一个变量 B。

此代码不起作用:

original_Ar = [0,1,2,3,4,5,6,7,8,9,10,11,12]
new_Ar = [s for s in original_Ar if (s != 2) or (s < 10)]

print (new_Ar)

如果我将它分成两个语句(而不是 or 语句) - 它们确实有效:

original_Ar = [0,1,2,3,4,5,6,7,8,9,10,11,12]
print ([s for s in original_Ar if (s != 2)])
print ([s for s in original_Ar if (s < 10)])

知道如何在一行中做到这一点吗?

【问题讨论】:

  • 尝试使用and 而不是or
  • 出于兴趣,您为什么使用or,因为您在写问题时使用了“and”?

标签: python if-statement


【解决方案1】:

你的布尔逻辑搞混了。您希望包含所有不等于 2 小于 10 的值:

new_Ar = [s for s in original_Ar if s != 2 and s < 10]
#           *both* conditions must be true ^^^

否则,您将包括s = 2,因为它小于十,并且您将包括s = 11s = 12,因为两者都不等于二!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2021-08-15
    • 2022-01-24
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多