【问题标题】:Using List Comprehension I want to Print odd even with string indicating "Even" for even numbers and "Odd for odd numbers"使用列表理解我想打印奇偶,字符串表示偶数为“偶数”,奇数表示奇数
【发布时间】:2019-07-23 14:53:57
【问题描述】:

使用列表理解我想打印奇偶数,字符串指示偶数为“偶数”,奇数为“奇数”

使用下面的代码 - 我得到的只是偶数和奇数。只是想知道我是否可以同时获得两个值并对应它们说明偶数/奇数。

obj = ["Even" if i%2==0 else "odd" for i  in range(20)] 
print(obj)

仅使用列表推导。

【问题讨论】:

    标签: python python-3.x list-comprehension


    【解决方案1】:

    我刚刚获取了您自己的代码,并将字符串连接到您的结果。你做得对。

    >>> obj = [f"{i} is Even" if i%2==0 else f"{i} is odd" for i  in range(20)]
    >>> print('\n'.join(obj))
    0 is Even
    1 is odd
    2 is Even
    3 is odd
    4 is Even
    5 is odd
    6 is Even
    7 is odd
    8 is Even
    9 is odd
    10 is Even
    11 is odd
    12 is Even
    13 is odd
    14 is Even
    15 is odd
    16 is Even
    17 is odd
    18 is Even
    19 is odd
    

    python中有很多字符串连接方法,你可以参考这个Which is the preferred way to concatenate a string in Python?问题。我在这里使用了 Python f'strings。

    【讨论】:

      【解决方案2】:

      当然。

      obj = [(i,"even" if i%2==0 else "odd") for i in range(20)]
      print(obj)
      

      [(0, '偶'), (1, '奇'), (2, '偶'), (3, '奇'), (4, '偶'), (5, '奇' ), (6, '偶'), (7, '奇'), (8, '偶'), (9, '奇'), (10, '偶'), (11, '奇'), (12, '偶'), (13, '奇'), (14, '偶'), (15, '奇'), (16, '偶'), (17, '奇'), (18 , '偶数'), (19, '奇数')]

      或者,如果您愿意,也可以使用 dict:

      obj = {i:"even" if i%2==0 else "odd" for i in range(20)}
      print(obj)
      

      {0: '偶', 1: '奇', 2: '偶', 3: '奇', 4: '偶', 5: '奇', 6: '偶', 7: '奇', 8: '偶', 9: '奇', 10: '偶', 11: '奇', 12: '偶', 13: '奇', 14: '偶', 15: '奇', 16:“偶数”,17:“奇数”,18:“偶数”,19:“奇数”}

      【讨论】:

        【解决方案3】:

        您可以尝试使用元组:

        obj = [(i, "Even") if i%2==0 else (i, "odd") for i in range(20)] 
        print(obj)
        

        【讨论】:

          【解决方案4】:
          print('\n'.join(str(i) + {0:' is even', 1:' is odd'}[i&1] for i in range(20)))
          

          或者:

          from itertools import cycle
          
          c = cycle([' is even', ' is odd'])
          print('\n'.join(str(i) + msg for i, msg in zip(range(20), c)))
          

          打印:

          0 is even
          1 is odd
          2 is even
          3 is odd
          4 is even
          5 is odd
          6 is even
          7 is odd
          8 is even
          9 is odd
          10 is even
          11 is odd
          12 is even
          13 is odd
          14 is even
          15 is odd
          16 is even
          17 is odd
          18 is even
          19 is odd
          

          【讨论】:

            【解决方案5】:
            obj = ["Even" if i%2==0 else "odd" for i in range(20)]
            print(list(enumerate(obj))) # [(0, 'Even'), (1, 'odd'), (2, 'Even'), (3, 'odd'), (4, 'Even'), (5, 'odd'), (6, 'Even'), (7, 'odd'), (8, 'Even'), ...
            

            或:

            obj = ["Even" if i%2==0 else "odd" for i in range(20)]
            
            for key,value in enumerate(obj):
                print ("{} is {} number".format(key,value))
            

            输出:

            0 is Even number
            1 is odd number
            2 is Even number
            3 is odd number
            4 is Even number
            5 is odd number
            6 is Even number
            7 is odd number
            8 is Even number
            9 is odd number
            10 is Even number
            11 is odd number
            12 is Even number
            13 is odd number
            14 is Even number
            15 is odd number
            16 is Even number
            17 is odd number
            18 is Even number
            19 is odd number
            

            【讨论】:

              猜你喜欢
              • 2022-12-01
              • 2017-02-06
              • 1970-01-01
              • 2016-04-21
              • 1970-01-01
              • 1970-01-01
              • 2021-07-18
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多