【问题标题】:How to convert a list of 2-tuples to a list of their first elements如何将 2 元组列表转换为其第一个元素的列表
【发布时间】:2023-03-05 11:58:01
【问题描述】:

我有一个这样的列表-

[(1, 3),(2, 2)]

我喜欢把它转换成-

[1,2]

我正在做的是-

c = [(1, 3),(2, 2)]
output = []
for a,b in c:
    output.append(a)
return output

有没有办法在 1 行中做到这一点?

【问题讨论】:

    标签: python python-3.x coding-style


    【解决方案1】:

    您可以使用list-comprehension

    output = [a for a,_ in c]
    

    这里的_,对应于问题中使用的b,是虚拟变量的常规名称。

    【讨论】:

      【解决方案2】:

      使用列表推导并从每个元组中获取第一个元素:

      c = [(1, 3),(2, 2)]
      
      print([i[0] for i in c])
      

      输出:

      [1, 2]  
      

      【讨论】:

        【解决方案3】:

        另一种方法是:

        [x[0] for x in c]
        

        【讨论】:

          【解决方案4】:

          使用 zip() 函数。

          b = [*list(zip(*a))[0]]
          

          【讨论】:

          • 我怀疑这是为了提供与已经建议的不同的东西而添加的,但列表理解不仅更具可读性,而且速度也更快。使用timeit,我发现 zip 方法对于大小为 1000000 的列表大约需要 3 倍,对于大小为 10 的列表大约需要 2 倍。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-18
          相关资源
          最近更新 更多