Python 把任意非空值转为 True 怎么写最简?

2020-03-03 18:57:39 +08:00
 JCZ2MkKb5S8ZX9pq
a = True if a else False
4588 次点击
所在节点    Python
22 条回复
Trim21
2020-03-03 18:58:31 +08:00
bool(a)………
freakxx
2020-03-03 19:09:59 +08:00
@Trim21

有可能会判断错误, 比如
bool(0)
laqow
2020-03-03 19:30:02 +08:00
只知道
try except
if is null
rimutuyuan
2020-03-03 19:39:29 +08:00
bool(len(a))
Levi233
2020-03-03 19:40:05 +08:00
@freakxx 如果是 0,你用 if 也是一样的结果啊。。。python 的隐式转换了解一下?
其实这种情况我们都不转为 true 或 false,直接 if 就行,动态类型语言不要用静态类型语言的思维去开发
Dvel
2020-03-03 19:45:36 +08:00
a = False if a in ['', (), [], set(), {}] else True
是这个意思吗?
mimzy
2020-03-03 19:46:00 +08:00
你的非空值定义是什么? None False '' [] () {} set() range(0) 以外还有么?
Trim21
2020-03-03 19:46:02 +08:00
@freakxx #2

Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> assert bool(0) is False, "bool(0) should be `False`"
>>> if 0:
... pass
... else:
... print(False)
...
False
>>>

错在哪了。。。bool 跟 if 的行为不是一样的吗
mimzy
2020-03-03 19:49:47 +08:00
@Trim21 #8 他的意思是楼主可能认为 0 属于自己定义的非空值,应该返回 True,而 Python 会返回 False
qmpz02
2020-03-03 19:50:51 +08:00
not not a
mimzy
2020-03-03 19:52:37 +08:00
@qmpz02 #10 这写法我在 JS 里见过… !!
freakxx
2020-03-03 20:06:24 +08:00
@Levi233
...黑人问号

#7 #9 的老哥说明了
freakxx
2020-03-03 20:10:21 +08:00
@Trim21

如果你说的是楼主的 if,那么是没必要的
我想说的 #7 #9 也说明了

因为非空值这定义不明确。
weyou
2020-03-03 20:14:25 +08:00
跟着 if 走,一楼正解,没啥好说的
SjwNo1
2020-03-03 20:29:48 +08:00
a = True if a is not 空 else False (逃
0ZXYDDu796nVCFxq
2020-03-03 20:46:22 +08:00
a = True if format(a) else False

测试:
>>> a = False
>>> True if format(a) else False
True

>>> a = None
>>> True if format(a) else False
True

>>> a = 0
>>> True if format(a) else False
True

>>> a = []
>>> True if format(a) else False
True

>>> a = int
>>> True if format(a) else False
True
qmpz02
2020-03-03 22:42:52 +08:00
@mimzy 哈哈哈哈哈,之前见人写过,也来凑凑热闹( doge
2DaYe
2020-03-03 23:40:08 +08:00
a = a is not None
leavic
2020-03-04 00:18:40 +08:00
a= if a
lithiumii
2020-03-04 01:07:02 +08:00
任意非空值范围太广了吧,包括各种 object 吗?不过感觉我写 pandas 的时候倒是遇到过类似的需求,nan、nat、None 等混一起,这时候会用 pd.isna

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

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

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

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

© 2021 V2EX