【问题标题】:Python: testing inter-dependence between stringsPython:测试字符串之间的相互依赖关系
【发布时间】:2014-09-17 10:08:34
【问题描述】:

我有一段代码可以比较两个字符串。

如果它们都是空的(即""),代码应该返回True

如果它们都被“填充”,代码应该返回True

否则(即一个为空),代码应返回False

目前我有:

def compare(first, second):

        if first:
            return bool(second)
        elif second:
            return bool(first) 
        else:
            return True

我确信有一种更简洁的方法可以用更少的子句(或者最好没有子句)来做到这一点?

【问题讨论】:

    标签: python string logic


    【解决方案1】:

    你想要“独占or”的倒数:

    >>> def compare(first, second):
        return not bool(first) ^ bool(second)
    
    >>> compare("", "")
    True
    >>> compare("foo", "")
    False
    >>> compare("", "bar")
    False
    >>> compare("foo", "bar")
    True
    

    【讨论】:

    • 这看起来不错,谢谢。我没有想到插入符号运算符。我会做一些性能测试,但我想它应该比我的方法更快并且具有确定性,这是一个很大的优势
    【解决方案2】:
    return len(first) == len(second) == 0 or len(first) > 0 and len(second) > 0
    

    或者

    return a==b=='' or a!='' and b!=''
    

    你不应该指望字符串上的布尔运算符

    【讨论】:

    • style guide 不同意你的观点:“对于序列,(字符串、列表、元组),使用空序列是错误的事实。”
    • 也准备用len回答:return (len(first+second)==0) or (len(first)*len(second)>0)
    • 真的不知道这有多简洁。事实上,多次调用其他函数肯定不那么简洁?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2012-03-28
    • 2021-10-17
    相关资源
    最近更新 更多