How to check in python if variable is not None and greater than something in one line?
如何在一行中声明?
1 2 3
| if x is not None:
if x > 0:
pass |
如果我只写"和",如果没有则显示异常
1 2
| if x is not None and x > 0:
pass |
- 请提供一个最小的、完整的、可验证的示例,以重现问题并可运行。你的情况是什么?
- 不可复制:if x is not None and x > 0: print("Not None")和else: print(None)适用于py2.7中的整数、字符串和列表。
- 例外是什么?
- 名称错误:未定义名称"x"
- 那意味着…x未定义…Python基本知识,在使用变量之前必须先初始化变量!
- 另请参见:stackoverflow.com/questions/1592565/…
也可以使用python三元运算符。在您的示例中,这可能对您有所帮助。您也可以进一步扩展相同的内容。
1 2 3 4 5 6 7
| #if X is None, do nothing
>>> x = ''
>>> x if x and x>0 else None
#if x is not None, print it
>>> x = 1
>>> x if x and x>0 else None
1 |
处理字符串值
1 2 3 4 5 6
| >>> x = 'hello'
>>> x if x and len(x)>0 else None
'hello'
>>> x = ''
>>> x if x and len(x)>0 else None
>>> |
- x=''并不表示x是None而是长度为0的str。用x = None代替。如果他的x真的是None的话,虽然这是可行的,但是从评论中可以看出,x确实没有定义。在x未定义的情况下,您的解决方案也会失败。
- 在这种情况下,小心使用if x,因为除None以外的东西可以对False进行评估。
- 在@tomothy32上跟进-用x=0试试你的接线员。你期望得到什么样的产出?
- @明天,我读了你的评论。是的,在检查条件之前必须定义X。我同意如果x,这将失败,如你所说,但这里我们有另一个检查,评估是x值大于0。在这种情况下,>>>x='str'>>>x如果x和len(x)>0否则无'str'
- @克里斯蒂娜和246;尼格…0并不是最好的例子,因为EDOCX1的13条件,但是点是清楚的。
- @ CythKy&Oy 246;NIG,如果x=0,则条件失败,否则循环是有效的。因为,0>0是假的。>>>X=0>>X如果X和X>0,则无>>>
- @Ajay2588但是,对于弦乐来说,你的答案不是说len(x) > 0,而是说x > 0。但我想这意味着这是一个数字,因为x > 0。不过,谨慎一点也不坏;if x is not None更为明确。
- @克里斯蒂亚克&246;尼格,你说得对。然而,在我对Tomothy的回复中,我也写下了代码的和平。让我在回答部分也加上同样的内容。
一些代码如下: