如何确保 17 个变量中的数字不同?

How can I make sure that numbers in 17 variables are different?

我有 17 个变量(S1、S2...S17),我需要检查它们是否都不同。除了

,还有什么办法可以做到这一点
if S1 != S2 and S1!=S3...

因为我真的不想写136个语句。也许是列表的某种方法?

如果所有这些数据都是可哈希的,您可以简单地构造一个集合并检查其长度,就像这样

if len({s1, s2, s3..., s17}) == 17:
   # All are not equal

例如,如果它们都是整数,例如

>>> s1, s2, s3 = 1, 1, 1
>>> len({s1, s2, s3})
1
>>> s1, s2, s3 = 1, 2, 3
>>> len({s1, s2, s3})
3

如果所有数字都相同,则集合将只有 1 个元素,因为所有重复项都被删除。因此,要检查所有元素是否不同,只需将集合的长度与变量总数进行比较即可。


相反,你可以直接写条件,像这样

if not (s1 == s2 == s3 == .... s17):
   # All are not equal

内部,Python会这样执行

if not ((s1 == s2) and (s2 == s3) and (s3 == s4) ... and (s16 == s17)):
   # All are not equal

您也可以使用any()

>>> l = [1, 4, 4, 5, 3, 7, 8]

>>> any(l.count(x) > 1 for x in l)

True

>>> l = [1, 4, 5, 3, 7, 8]

>>> any(l.count(x) > 1 for x in l)

False

也许您可以将所有变量放在一个列表中。当你把它转换成一个集合并且这个集合的长度仍然是 17 时,所有的变量都是唯一的。如果有重复值,新建的set会小于17。所以可以把一个list里面存放的变量转成一个set,看list和set的长度是否相同。