我试图计算嵌套列表中的元素数量,该列表如下所示:
[(1944, ['Hughes H']),
(1940, ['Hill DK', 'Crawford GN', 'Greene HS', 'Myers J', 'Burr GO']),
(1941,
['McClung CE',
'Sumner FB',
'Gates RR',
'Lewis WH',
'Haas O',
'Haas O',
'Gould BS',
'Tytell AA',
'Hatch MH']),
(1942,
['Gaffron H',
'Gardner FT',
'Edwards PR',
'Bruner DW',
'Lake NC',
'Ratner B',
'Gaffron H',
'Rubin J',
'Ritter WE']),
(1943,
['Bousfield G',
'Fishbein M',
'Faber HK',
'Silverberg RJ',
'Dong L',
'Howorth MB'])]
这是用于获取此输出的代码:
d = defaultdict(list)
for k, v in authors_expanded:
d[k].append(v)
d.items()
使用以下代码可以工作,只需减去一个即可:
len(d.items())-1
由于列表的第一个元素始终包含一个项目。 我正在寻找一个更好的解决方案。
为我提供一个好的链接也很好,我自己似乎找不到任何链接。
可以使用 Python 中的列表推导式来计算嵌套列表中元素的总数。
data = [(1944, ['Hughes H']),
(1940, ['Hill DK', 'Crawford GN', 'Greene HS', 'Myers J', 'Burr GO']),
(1941,
['McClung CE',
'Sumner FB',
'Gates RR',
'Lewis WH',
'Haas O',
'Haas O',
'Gould BS',
'Tytell AA',
'Hatch MH']),
(1942,
['Gaffron H',
'Gardner FT',
'Edwards PR',
'Bruner DW',
'Lake NC',
'Ratner B',
'Gaffron H',
'Rubin J',
'Ritter WE']),
(1943,
['Bousfield G',
'Fishbein M',
'Faber HK',
'Silverberg RJ',
'Dong L',
'Howorth MB'])]
count = sum([len(x[1]) for x in data])
print(count) # 输出:24
这段代码的工作原理是:
-
[len(x[1]) for x in data]
- 此列表推导式循环遍历data
列表中的每个元组x
。对于每个元组,它都会提取第二个元素(也就是作者列表)并使用len()
计算其长度。这将创建一个包含每个子列表长度的新列表。 -
sum(...)
- 此函数将新创建的列表中的所有长度加起来,得到嵌套列表中元素的总数。
这种方法可以有效且简洁地计算嵌套列表中元素的数量,而无需依赖任何特殊条件或减法。
标签:python,python-2.7,nested-lists From: 26693659