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

时间:2015-03-24 12:34:56

标签: python if-statement comparison

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

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

因为我真的不想写136个语句。列表的一些方法,可能吗?

3 个答案:

答案 0 :(得分:4)

如果所有这些数据都是可清除的,您可以简单地构造一个集合并检查其长度,如下所示

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

例如,如果它们只是整数,例如you mentioned in the comments

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

如果所有数字都相同,则set将只有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

答案 1 :(得分:1)

您也可以使用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

答案 2 :(得分:0)

也许您可以将所有变量放在列表中。当您将其转换为集合并且此集合的长度仍为17时,所有变量都是唯一的。如果存在重复值,则新创建的集将小于17.因此,您可以将包含存储在其中的变量的列表转换为集合,并检查列表和集合的长度是否相同。