【发布时间】:2013-08-23 20:15:07
【问题描述】:
假设我的列表只有str 和None,并且我想检查将降低的字符串分配给另一个变量,但如果它是升高的或无,它应该呈现为无。
检查None 和str.isupper() 的代码有效:
for i in [None,'foo',None,'FOO',None,'bar']:
x = None if i is None or i.isupper() else i
print x
但否定条件不起作用:
for i in [None,'foo',None,'FOO',None,'bar']:
x = i if i is not None or i.isupper() else None
print x
它返回AttributeError:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
AttributeError: 'NoneType' object has no attribute 'isupper'
- 为什么会这样?
- 除了循环中的三元赋值之外,还有其他方法可以执行相同的操作吗?
【问题讨论】:
-
三元运算符使代码更难阅读
标签: python iteration conditional-statements ternary