【问题标题】:How to explicitly choose elements from a list如何从列表中显式选择元素
【发布时间】:2021-04-10 05:08:59
【问题描述】:
my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]

我要打印“wow”、“nice”、“peach”

所以:

my_list[1]
my_list[5]
my_list[2]

我怎样才能在一行中做到这一点,或者至少比上面更快?

【问题讨论】:

    标签: python list code-cleanup


    【解决方案1】:

    您可以使用operator.itemgetter

    >>> from operator import itemgetter
    >>> my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
    >>> itemgetter(1, 5, 2)(my_list)
    ('wow', 'nice', 'peach')
    

    【讨论】:

      【解决方案2】:

      您可以使用列表推导返回值列表:

      [my_list[i] for i in [1, 5, 2]]
      

      或逐一打印:

      for i in [1, 5, 2]:
          print(my_list[i])
      

      或作为 1-liner 使用参数解包 (*) 运算符来“展平”生成器:

      print(*(my_list[i] for i in [1, 5, 2]), sep='\n')
      

      【讨论】:

        【解决方案3】:

        用途:

        print(*map(lambda x: my_list[x], [1, 5, 2]))
        

        输出:

         wow nice peach
        

        【讨论】:

          【解决方案4】:

          你也可以使用列表推导

          >>> [my_list[x] for x in [1, 5, 2]]
          ['wow', 'nice', 'peach']
          

          甚至

          >>> [print(my_list[x]) for x in [1, 5, 2]]
          wow
          nice
          peach
          
          

          【讨论】:

          • 在列表理解中调用 print 是不好的形式。列表推导不应该有副作用。只需使用常规的 for 循环即可。
          【解决方案5】:

          如果有人喜欢没有任何复杂语法库的简单方法,这可能是一个解决方案!

          要让代码看起来干净,最好的方法是为它添加一个函数,让它既干净又具有更多功能。

          代码:

          def printList(list, *index, all=False):
              if all:
                  for item in list:
                      print(item)
              else:
                  for i in index:
                      print(list[i])
          
          my_list = ["zero", "wow", "peach", 3, 4, "nice", "pickle"]
          
          printList(my_list, 1, 5, 2) # To print some elements
          print("---------------------------")
          printList(my_list, all=True)
          

          输出:

          wow
          nice
          peach
          ---------------------------
          zero
          wow
          peach
          3
          4
          nice
          pickle
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-12-28
            • 1970-01-01
            • 1970-01-01
            • 2017-06-08
            • 2019-08-14
            • 1970-01-01
            • 2011-10-01
            • 2012-08-20
            相关资源
            最近更新 更多