【问题标题】:Insert every tuple in a list to another tuple so I will have a list of tuples of tuples将列表中的每个元组插入另一个元组,这样我就会有一个元组的元组列表
【发布时间】:2020-11-23 19:20:09
【问题描述】:

我正在尝试将以下元组列表转换为包含原始元组的元组的列表。 例如,我们有以下列表:

arr1 = [(1, 2), (2, 3), (4, 5)]

我尝试进行以下转换,但没有成功:

arr1_tuples = [tuple(item) for item in arr1]

想要的输出是:

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

【问题讨论】:

    标签: python list tuples python-3.6


    【解决方案1】:

    您想要的输出是不可能的(单个元素 tuples 将有一个带有尾随逗号的 repr),但是您想要的数据结构可以通过以下方式实现:

    arr1_tuples = [(item,) for item in arr1]
    

    这将每个item 包装在一个tuple 中。括号不是必需的,但如果没有括号,很容易忽略尾随逗号。

    如果printed,结果将是:

    [((1, 2),), ((2, 3),), ((4, 5),)]
          # ^          ^          ^ Commas unavoidable in one-tuples; otherwise matches request
    

    【讨论】:

      【解决方案2】:

      使用map:

      arr1 = [(1, 2), (2, 3), (4, 5)]
      
      arr1_tuples = map(lambda x:(x,), arr1)
      
      print(list(arr1_tuples))
      

      输出:

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

      lambda x:(x,) 将接收一个元素,并在一个元组中返回它。

      【讨论】:

      • 没有理由使用map,因为它需要lambda 才能运行(等效的listcomp/genexpr 可以避免)。它比同等的更冗长和更慢。 map 只有当你有一个现有的函数来满足你的需要时才有用,最好用 C 实现(如果它没有用 C 实现,map 不会提供比 listcomp/genexpr 等效的有意义的性能提升)。
      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多