刚开始学习Python,请问下面的代码什么意思。多谢各位大神!
defflatten(nested):try:try:nested+''#如果nested=['abc',1,2,3,4],那么nested+‘’可以执行吗?nested...
def flatten(nested):
try:
try:
nested + '' #如果nested = ['abc',1,2,3,4],那么nested+‘’ 可以执行吗?nested是列表,‘’是字符串, 两者怎么能进行+运算?这句话是怎么判断的?
except TypeError:pass
else: raise TypeError #这个else子句是在 nested+‘’ 这一句通过后执行的吗?它引发了一个 typeerror,这个error传递到哪里?
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
就像nested = ['abc',1,3,4,'def'],求大神解答具体执行过程,多谢多谢!!
(我没有财富值,但是求帮忙……) 展开
try:
try:
nested + '' #如果nested = ['abc',1,2,3,4],那么nested+‘’ 可以执行吗?nested是列表,‘’是字符串, 两者怎么能进行+运算?这句话是怎么判断的?
except TypeError:pass
else: raise TypeError #这个else子句是在 nested+‘’ 这一句通过后执行的吗?它引发了一个 typeerror,这个error传递到哪里?
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
就像nested = ['abc',1,3,4,'def'],求大神解答具体执行过程,多谢多谢!!
(我没有财富值,但是求帮忙……) 展开
展开全部
def flatten(nested):
try:
try : nested + ' '
except TypeError: pass
else: raise TypeError
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
def flatten(l):
for el in l:
if hasattr(el, "__iter__") and not isinstance(el, str):
for sub in flatten(el):
yield sub
else:
yield el
这两段函数的功能相同。主要是为了展开嵌套列表等。
你的那两点主要是为了保证字符串不被展开。
比如说,你输入['abc',1,2]
不加那几句会变成'a','b','c',1,2
加了之后就是'abc',1,2
def flatten(nested):
try:
for sublist in nested:
for element in flatten(sublist):
yield element
except:
yield nested
你可以看看上面的这个函数跟最前面两个函数输出的区别。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询