如何解决在不知道它们的值的情况下检查python中几个变量的不等式
我有四个字符串变量:a,b,c,d
。我不知道它们的值(它们是随机分配的),我不在乎。我只需要确保它们中的每一个都与其他变量不同,并且没有两个变量具有相同的值。我试过了
if a != b != c != d:
return true
但它不起作用。我该怎么办?
解决方法
您可以使用幼稚的方法:
if a != b and a != c and a != d and b != c and b != d and c != d:
# do something
或者你可以利用一个集合不能两次保存相同的可散列值的事实:
if len(set([a,b,c,d])) == 4:
# do something
或者,更短的写法:
if len({a,d}) == 4:
# do something
您的代码不起作用的原因是因为您确实在这样做:
if a != b and b != c and c != d:
return true
因此,它只检查您需要检查的部分内容,它检查彼此直接跟随的所有值是否相等,但不检查相隔多于一个位置的值是否相等。
,这样做吗?
assert len({a,d}) == 4 # set of 4 distinct elements should be 4
if len({a,d}) == 4:
return True
您的条件不起作用的原因
>>> 1 != 2 != 1
True
从上面的例子来看,1 != 2
和 2 != 1
,因此传递了条件。它不会检查您的第一个和第三个变量是否相等。
你不能像这样链接比较。下面是使用 if 语句的一种方法,虽然它很乱。
if (a != b and a != c and a != d
and b != c and b != d and c !=d):
return True
一个不错的方法(尽管速度和空间成本较低)如下:
things_to_see_if_unique = [a,d]
if len(things_to_see_if_unique) == len(set(things_to_see_if_unique)):
return True
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。