python 的奇技淫巧(一)

今天使用列表生成的用法来实现这样一个逻辑:

[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))

总的来说列表生成式可以参照这个结构:
[<逻辑部分> <循环部分> <过滤部分(可选)>]

你可能感兴趣的:(python,python,列表生成式)