[问题] bool(list(data)),我只认为这个表达式是为了判断list(data),列表是否为空。 是否还有其他的意义存在呢?

2013-10-21 09:18:14 +08:00
 1989922yan
3107 次点击
所在节点    Python
8 条回复
mengzhuo
2013-10-21 09:28:58 +08:00
对于if等条件语句没有意义,其他的,比如UT就不好说了

都是调用__cmp__的鸭子而已
Keyes
2013-10-21 09:34:00 +08:00
PYTHON的话,其实我通常情况下判断列表是否为空是用if len(data)。。。非零即真
kingxsp
2013-10-21 09:37:03 +08:00
判断列表是否为空 if not data:
9hills
2013-10-21 11:09:34 +08:00
就是判断列表是否为空,没啥意义

此处这么写比较简洁。。你总不能

if list(data):
return True
else:
return False

吧。。
mengzhuo
2013-10-21 11:13:47 +08:00
Python内置的__contains__一定得返回布尔值的

在这里有用
Ever
2013-10-21 15:13:42 +08:00
@Keyes PEP8是明确反对这种写法的

For sequences, (strings, lists, tuples), use the fact that empty sequences are false.

Yes: if not seq:
if seq:

No: if len(seq)
if not len(seq)
Keyes
2013-10-21 20:16:33 +08:00
@Ever 我之前看pep8时候就觉得很反感这个建议,我习惯的用法是这样

如果条件是布尔型:
v = True
if v

如果条件是整形:
v = 1000
if v == 1000

如果条件是list、dict:
v1 = [1, 2, 3]
if len(v1)

v2 = {1:"1", 2:"2", 3:"3"}
if len(v2)

如果条件是None:
v = None
if v is None

很简单,我要的就是代码可读性高,看到if我就知道变量是什么类型的,不知道这样说能否理解

诶。。我在想要不要单开一贴说说这问题。。。
Keyes
2013-10-21 20:23:00 +08:00
@Ever 忘记了字串也是和list、dict的方法一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/86253

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX