【问题标题】:Using list comprehension to reduce a function that transforms list of lists in tuples of tuples使用列表推导来减少在元组的元组中转换列表列表的函数
【发布时间】:2018-10-31 16:34:04
【问题描述】:

我想使用列表推导来更改此函数,以便它具有 1 或 to 行。该函数将包含列表的列表转换为包含元组的元组中的列表

def lol(lista):
        novotuplo = ()
            for i in range(len(lista)):
                novotuplo += (tuple(lista[i]),)

            return novotuplo

【问题讨论】:

  • 试试novotuplo = tuple((x,) for x in lista)
  • novotuplo = (tuple(lst) for lst in lista)
  • 请提供输入和预期输出

标签: python python-3.x list tuples


【解决方案1】:

我认为应该这样做。

novotuplo = tuple(tuple(item) for item in lista)

【讨论】:

    【解决方案2】:

    如果您希望它以函数形式出现,这是一种方法。这里不需要索引,因为lst in lista 直接迭代元素。

    lista = [[1],[2],[3]]
    def lol(lista):
        novotuplo = tuple(tuple(lst) for lst in lista)
        return novotuplo
    
    print (lol(lista))
    # ((1,), (2,), (3,))
    

    【讨论】:

      【解决方案3】:

      您可以将map 的项目传递给tuple() 构造函数:

      tuple(map(tuple, lista))
      

      【讨论】:

      • 谢谢,成功了!你能解释一下代码做了什么吗?我是初学者,这是一个项目,如果老师问我,我必须解释
      • 很高兴能提供帮助。要将一个列表转换为元组,您可以在列表上使用tuple() 构造函数。要将列表列表转换为元组的元组,请使用map functiontuple 构造函数应用于给定列表lista 的每个项目,然后转换map 的输出(这是一个生成器)到另一个调用 tuple() 构造函数的元组。
      【解决方案4】:

      这应该可行:

      lista = [[1,2], [3,4], [5,6]]
      print(tuple(tuple(i) for i in lista))
      # ((1, 2), (3, 4), (5, 6))
      

      对上述列表理解的更明确的解释是创建一个 tuple,将 lista 中的所有元素转换为 tuple

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 2011-03-13
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 2020-10-16
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        相关资源
        最近更新 更多