python程序,谁能给我解释解释,捕捉到异常后,到底怎么处理的,为啥会是这个结果 70

结果:... 结果: 展开
 我来答
百度网友87b2a52
2013-03-24 · 知道合伙人软件行家
百度网友87b2a52
知道合伙人软件行家
采纳数:523 获赞数:3490
毕业于南京大学,硕士学位。10年软件研发经验。现任信息系统架构师。

向TA提问 私信TA
展开全部
当flatten被调用时,有两种可能性(处理递归时大部分时都是有两种情况):基本情况和需要递归的情况。在基本的情况中,函数被告知展开一个元素(比如一个数字),这种情况下,for循环会引发一个TypeError异常(因为试图对一个数字进行迭代),生成器会产生一个元素。
TypeError: 'int' object is not iterable
如果展开的是一个列表(或者其他的可迭代对象),那么就要进行特殊处理。程序必须遍历所有的子列表(一些可能不是列表),并对它们调用flatten。然后使用另一个for循环来产生被展开的子列表的所有元素。这可能看起来有点不可思议,但却能工作。
追问
又是抄的吗??我想知道当产生TypeError时是怎么工作的,主要解释result.append(nested)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iS谁在看YoU
2017-08-05 · TA获得超过367个赞
知道小有建树答主
回答量:253
采纳率:90%
帮助的人:185万
展开全部
for sublist in nested # 这种语句无法处理非可遍历对象,譬如单个int 2

上面的程序可以改写成:
def flattern(nested):
    result = []
    if isinstance(nested, list):
        for sublist in nested:
            result.extend(flattern(sublist))
     else:
         result.append(nested)
     return result
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
给响亮的名字吧
2013-03-25
知道答主
回答量:2
采纳率:0%
帮助的人:2989
展开全部
异常的话直接加入result中,,整数 for sublist in 3 执行到这的时候 就直接加到result中,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
粗犷绿毛君AY
2013-03-25 · TA获得超过353个赞
知道小有建树答主
回答量:451
采纳率:0%
帮助的人:391万
展开全部
有更好的方式来处理嵌套列表:
def flatten(x):
for elem in x:
if not isinstanceof(elem, basestring) and hasattr(elem, '__iter__'):
for y in flatten(elem):
yield y
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式