假设我有一个列表,[1, [2, 1], 1, [3, [1, 3]], [4, [1], 5], [1], 1, [[1]]]
并且我想计算列表中1的数量。我该怎么做.count
?无论如何,有没有要删除的[],例如enumerate(seq)
要删除的内容,()
然后计算列表中1的数目?
您需要一个函数来遍历任意嵌套的列表。那么计数是微不足道的。遍历可以使用递归生成器来完成:
def traverse(val):
if isinstance(val, list):
for v in val:
for x in traverse(v):
yield x
else:
yield val
>>> list(traverse([1, [2, 1], 1, [3, [1, 3]], [4, [1], 5], [1], 1, [[1]]]))
[1, 2, 1, 1, 3, 1, 3, 4, 1, 5, 1, 1, 1]
使用yield from
python 3.3中的新语法,此定义会更好,使用它我们可以替换以下循环之一:
def traverse(val):
if isinstance(val, list):
for v in val:
yield from traverse(v)
else:
yield val
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句