【问题标题】:Python If statement : how to equate to a listPython If 语句:如何等同于列表
【发布时间】:2015-10-01 08:05:41
【问题描述】:

我编写了一个程序,可以消除列表中的项目并输出另一个列表。

程序:

r = [5,7,2]
for i in range(10):
    if i != r:
        print i

输出

0
1
2
3
4
5
6
7
8
9

但我想要的输出是

0
1
3
4
6
8
9

这样做的方法是什么?

【问题讨论】:

  • 因为 i 是一个整数,而 r 是一个列表。因此,您正在将 int 与列表进行比较。这就是为什么它每次都以 not equal 的形式出现并根据您的逻辑打印每个整数。所以,使用 if i not in r
  • 如果有人回答了您的问题,请接受它或评论说它不起作用

标签: python python-2.7 loops python-3.x if-statement


【解决方案1】:

使用set

>>> r = [5,7,2]
>>> for i in set(range(10))-set(r):
...     print(i)
...
0
1
3
4
6
8
9
>>>

【讨论】:

    【解决方案2】:

    你可以这样试试,

    >>> r = [5, 7, 2]
    >>> for ix in [item for item in range(10) if item not in r]:
    ...     print ix
    ... 
    0
    1
    3
    4
    6
    8
    9
    

    【讨论】:

      【解决方案3】:

      当你这样做时 - i !=r 总是正确的,因为 intlist 永远不会相等。您想使用not in 运算符 -

      r = [5,7,2]
      for i in range(10):
          if i not in r:
              print i
      

      来自 python documentation -

      运算符innot in 测试集合成员资格。如果x 是集合s 的成员,x in s 的计算结果为 true,否则为 false。 x not in s 返回 x in s 的否定。

      【讨论】:

        【解决方案4】:

        您正在检查 if a integer is not equal to to list 。这是正确的,因此它会打印所有值

        您真正想要做的是检查该值是否在列表中不可用。因此您需要使用not in 运算符

        r = [5,7,2]
        for i in range(10):
            if i not in r:
                print i
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-01
          • 2014-04-01
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 2023-01-15
          • 2020-07-09
          • 1970-01-01
          相关资源
          最近更新 更多