相关疑难解决方法(0)

嵌套列表和计数()

我想得到x出现在嵌套列表中的次数.

如果列表是:

list = [1, 2, 1, 1, 4]
list.count(1)
>>3
Run Code Online (Sandbox Code Playgroud)

还行吧.但如果列表是:

list = [[1, 2, 3],[1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)

如何获得1次出现的次数?在这种情况下,4.

python list

23
推荐指数
4
解决办法
3万
查看次数

用于展平嵌套列表的递归生成器

我是一个编程新手,并且在理解我的python教科书(Magnus Lie Hetland的"Beginning Python")中的一个例子时遇到了一些麻烦.该示例用于递归生成器,旨在展平嵌套列表的元素(具有任意深度):

def flatten(nested):
    try:
        for sublist in nested:
            for element in flatten(sublist):
                yield element
    except TypeError:
        yield nested
Run Code Online (Sandbox Code Playgroud)

然后,您将按如下方式提供嵌套列表:

>>> list(flatten([[[1],2],3,4,[5,[6,7]],8]))
[1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

我理解flatten()中的递归如何帮助减少到这个列表的最内层元素'1',但是我不明白当'1'实际上作为'嵌套传递回flatten()时会发生什么".我认为这会导致TypeError(不能迭代一个数字),并且异常处理实际上是用于生成输出的繁重工作......但是使用flatten()的修改版本进行测试已经说服了我事实并非如此.相反,似乎'yield element'行是负责任的.

那就是说,我的问题是......如何"屈服元素"实际上被执行?似乎'嵌套'将是一个列表 - 在这种情况下添加另一层递归 - 或者它是一个数字,你得到一个TypeError.

任何对此的帮助都将非常感激...特别是,我喜欢在事件链中走动,因为flatten()处理一个简单的例子:

list(flatten([[1,2],3]))
Run Code Online (Sandbox Code Playgroud)

python recursion

9
推荐指数
2
解决办法
3033
查看次数

标签 统计

python ×2

list ×1

recursion ×1