【问题标题】:size of a whole list containing tuple [duplicate]包含元组的整个列表的大小[重复]
【发布时间】:2016-10-02 12:47:59
【问题描述】:

我有一个由元组组成的列表

liste_groupe=((image1, image2, image6),(image5, image4, image8, image7, image3, image9))

我想知道所有元组的元素数,即这里的结果是 9

我试过 len(liste_groupe) 但它给了我 2 个。

那么我应该编写什么代码才能获得列表中所有元组的所有元素的数量?

【问题讨论】:

标签: python list size tuples


【解决方案1】:

没有必要为了找到总长度而将列表展平,如果您已经知道列表是一个简单的二维结构,则无需使用递归。这就是你所需要的:

sum(map(len, liste_groupe))

【讨论】:

    【解决方案2】:

    将一个元组的元组扁平化成一个列表,

    >>> liste_groupe=(('image1', 'image2', 'image6'),('image5', 'image4', 'image8', 'image7', 'image3', 'image9'))
    >>> l = [item for t in liste_groupe for item in t]
    >>> len(l)
    9
    
    # Or use itertools.chain
    >>> import itertools
    >>> l = list(itertools.chain(*liste_groupe))
    >>> len(l)
    9
    

    如果你只关心元素的数量,

    >>> count = sum([len(t) for t in liste_groupe])
    >>> count
    9
    

    【讨论】:

    • 如果您只想计算长度,为什么要实际展平列表?看起来很浪费。
    • @AlexHall,你是对的。你的回答很好,应该采纳。
    【解决方案3】:

    您可以遵循递归方法:

    def tuple_length( t ):
        if type(t) != tuple:
            return 1
        length = 0
        for element in t:
            length += tuple_length( element )
        return length
    

    现在,tuple_length(liste_groupe) 将按预期返回 9。

    【讨论】:

      【解决方案4】:

      递归可以为您完成此任务。使用以下函数可以计算 n 维元组或列表的大小。

      def calculate_size(data_set, size=0):
          for i in data_set:
              if isinstance(i, tuple) or isinstance(i, list):
                  size += calculate_size(i)
              else:
                  size += 1
          return size
      

      【讨论】:

        【解决方案5】:

        适用于单个嵌套列表。对于更深或不规则嵌套的列表,您需要一个使用chain 的递归函数。

        from itertools import chain
        
        cnt = len(list(chain.from_iterable(list_group)))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-20
          • 2021-07-27
          • 2014-01-20
          • 2020-04-29
          • 1970-01-01
          相关资源
          最近更新 更多