igo*_*gue 73 python list-comprehension pylint
我有这样一条线:
filter(lambda x: x == 1, [1, 1, 2])
Run Code Online (Sandbox Code Playgroud)
Pylint正在显示警告:
W: 3: Used builtin function 'filter'
Run Code Online (Sandbox Code Playgroud)
这是为什么?列表理解推荐的方法是什么?
当然我可以像这样重写:
[x for x in [1, 1, 2] if x == 1]
Run Code Online (Sandbox Code Playgroud)
而且我没有收到任何警告,但我想知道是否有这样的PEP?
Ned*_*der 94
Pylint经常在谈论不应该做的事情.您可以在.pylintrc文件中禁用警告.
此页面http://pylint-messages.wikidot.com/messages:w0141表明问题是过滤器和地图已被列表推导取代.
你的pylintrc文件中这样的一行会使警告变得安静:
disable=W0141
Run Code Online (Sandbox Code Playgroud)
ser*_*inc 10
这是为什么?列表理解推荐的方法是什么?
列表理解建议在教程示例中说明
它更简洁,更易读.
并且大多数答案都是关于SO的Python List Comprehension Vs. 地图在那里它是
filter
定义更有效lambda
filter
filter
,map
如果你
map
,map
,或TL; DR:在大多数情况下使用列表理解
我遇到了同样的问题,无法解决
内置函数“输入”为什么不好。我你打算
禁用它:
pylint --bad-functions =“ [地图,过滤器,应用]” YOUR_FILE_TO_CHECK_HERE
一旦您喜欢设置:
pylint --bad-functions="[map,filter,apply]" --some-other-supercool-settings-of-yours
--generate-rcfile > test.rc
Run Code Online (Sandbox Code Playgroud)
验证设置是否在文件中,例如:
cat test.rc | grep -i YOUR_SETTING_HERE
Run Code Online (Sandbox Code Playgroud)
之后,您可以在本地使用此文件
pylint --rcfile test.rc --your-other-command-line-args ...
Run Code Online (Sandbox Code Playgroud)
甚至将其用作默认的rcfile。为此,请您参考
pylint --long-help
Run Code Online (Sandbox Code Playgroud)