Python 3.8.1 - 海象表达式仅仅与三元表达式、列表推导式混合的缺陷与不足

在上一期中,我们探讨了海象表达式的超级应用。
可是为什么我还需要定义另一个函数?
这就牵扯到了本期的话题,海象表达式的缺陷与不足。

a=[1,2,3,4,5,6]
[a if((b:=c+1)>3)else 0 for a in a if(c:=a+1)]<=>
for b in range(len(a)):
	if(d:=a[b]+1):
		if((c:=d+1)>3):a[b]=0

这可以正常执行,这是一个简单的混合应用。
我们来看看它的极限在哪里。

[[d+1 for d in([a+1 for d in range(4)] if(len(str(b:=c+1))>1)else[d+1 for d in range(4)])] for a in a if(c:=a+1)]

如果要求再循环,就会出现如下报错:

    print([[d+1 for d in([a+1 for d in range(4)] if(len(str(b:=c+1))>1)else[d+1 for d in range(4)])] for a in a if(c:=a+1)])
                                                           ^
SyntaxError: assignment expression cannot be used in a comprehension iterable expression

语法错误:赋值表达式不能用于列表推导式的迭代表达式中。

解决办法:外置函数使用海象表达式。

你可能感兴趣的:(Python,笔记)