我有17个变量(S1,S2 ...... S17),我需要检查它们是否完全不同。除了
之外,还有什么方法可以做到这一点if S1 != S2 and S1!=S3...
因为我真的不想写136个语句。列表的一些方法,可能吗?
答案 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.因此,您可以将包含存储在其中的变量的列表转换为集合,并检查列表和集合的长度是否相同。