如果item为空字符串,则返回True

时间:2016-08-28 18:41:00

标签: python

请考虑以下代码段:

True

即使iterable中的item为空字符串,Pythonic如何使此片段返回None

标准限制应适用 - 如果项目为Falseimport math print(math.ceil(1/float(2))) 等,则应按预期返回False。

4 个答案:

答案 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