请考虑以下代码段:
True
即使iterable中的item为空字符串,Pythonic如何使此片段返回None
?
标准限制应适用 - 如果项目为False
或import math
print(math.ceil(1/float(2)))
等,则应按预期返回False。
答案 0 :(得分:2)
>>> lst = ["", 1, 2]
>>>
>>> all(True if i=='' else i for i in lst)
True
如果您想要True,如果至少有一个项目的评估结果为True,请使用any()
。
>>> any(lst)
True
请注意,通常any()
和all()
接受可迭代参数,您不需要循环遍历它们。
答案 1 :(得分:2)
这个选项对我来说很好看。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
答案 2 :(得分:1)
all([x for x in i if not isinstance(x, str)])
唯一的假字符串是空字符串,所以如果你不想测试它,那么过滤掉字符串。
答案 3 :(得分:-1)
您可以使用all,例如:
tests = [
[None, False, "", 1, 2],
["", 1, 2],
[1, 2],
[]
]
for i in tests:
print i
print all(filter(lambda x: x != '', i))
print all(True if x == '' else x for x in i)
print '-' * 80