size of a whole list containing tuple
本问题已经有最佳答案,请猛点这里访问。
我有一个由元组组成的列表
1 | liste_groupe=((image1, image2, image6),(image5, image4, image8, image7, image3, image9)) |
我想得到所有元组ie的元素个数,结果是9。
我试过Len(李斯特集团),但它给了我2分。
那么,我应该编写什么代码来获得列表中所有元组的所有元素的数目呢?
适用于单个嵌套列表。对于更深或不规则嵌套的列表,需要使用
1 2 3 | from itertools import chain cnt = len(list(chain.from_iterable(list_group))) |
。
不需要为了找到总长度而展平列表,并且如果您已经知道列表是一个简单的二维结构,就不需要使用递归。这就是你所需要的:
1 | sum(map(len, liste_groupe)) |
递归可以为您完成这一点。通过以下函数,可以计算n维元组或列表的大小。
1 2 3 4 5 6 7 | 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 |
。
您可以使用递归方法:
1 2 3 4 5 6 7 | 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。
将一组元组展平到列表中,
1 2 3 4 5 6 7 8 9 10 | >>> 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 |
如果你只关心元素的数量,
1 2 3 | >>> count = sum([len(t) for t in liste_groupe]) >>> count 9 |
号