假设我的列表只有str
and 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'
- 为什么呢?
- 除了循环中的三元赋值之外,还有其他方法可以执行相同的操作吗?