今天使用列表生成的用法来实现这样一个逻辑:
[x for x in range(1, 10) if x % 2]
这样写是正确的,但是之后我想写成这样:
[x for x in range(1, 10) if x % 2 else x * 100]
但是它报错了:
File “”, line 1
[x for x in range(1, 10) if x % 2 else x * 100]
^
SyntaxError: invalid syntax
在stackoverflow中查到(你可以到这儿查看完整的提问过程):
上面的正确写法应该是这样:
[ x if x%2 else x*100 for x in range(1, 10) ]
如果做过滤的话,应该是这样的:
[ EXP for x in seq if COND ]
不做过滤的话,是这样的:
[ EXP for x in seq ]
当然你也可以使用map来处理这些逻辑:
map(lambda x: [x*100, x][x % 2 != 0], range(1,10))
总的来说列表生成式可以参照这个结构:
[<逻辑部分> <循环部分> <过滤部分(可选)>]