如何确保 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的长度是否相同。
我有 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的长度是否相同。