如何使用 Python 'in' 运算符检查我的列表/元组是否包含每个整数 0、1、2?

新手上路,请多包涵

如何使用 Python in 运算符来检查我的列表/元组 sltn 包含每个整数 0、1 和 2?

我尝试了以下,为什么他们都错了:

 # Approach 1
if ("0","1","2") in sltn:
     kwd1 = True

# Approach 2
if any(item in sltn for item in ("0", "1", "2")):
     kwd1 = True


更新:为什么我必须将 ("0", "1", "2") 转换为元组 (1, 2, 3) ?或列表 [1, 2, 3]

原文由 G.Armstrong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 667
2 个回答
if ("0","1","2") in sltn

您正在尝试检查 sltn 列表是否包含元组 ("0","1","2") ,它不包含元组。 (它包含 3 个整数)

但是您可以使用 #all() 完成它:

 sltn = [1, 2, 3] # list
tab = ("1", "2", "3") # tuple

print(all(int(el) in sltn for el in tab)) # True

原文由 Mohammed Aouf Zouag 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 in 关键字是调用对象的 __contains__ 方法的简写。

 >>> a = [1, 2, 3]
>>> 2 in a
True
>>> a.__contains__(2)
True

因此, ("0","1","2") in [0, 1, 2] 询问元组 ("0", "1", "2") 是否 包含 在列表 [0, 1, 2] 中。这个问题的答案是 False 。要成为 True ,您必须有一个这样的列表:

 >>> a = [1, 2, 3, ("0","1","2")]
>>> ("0","1","2") in a
True

另请注意,元组的元素是字符串。您可能想检查元组中的任何或所有元素( _在将这些元素转换为整数后_)是否包含在您的列表中。

要检查元组的所有元素(作为整数)是否包含在列表中,请使用

>>> sltn = [1, 2, 3]
>>> t = ("0", "2", "3")
>>> set(map(int, t)).issubset(sltn)
False

要检查列表中是否包含元组的任何元素(作为整数),您可以使用

>>> sltn_set = set(sltn)
>>> any(int(x) in sltn_set for x in t)
True

并利用延迟评估 any 执行。

当然,如果您的元组没有特殊原因包含字符串,只需使用

(1, 2, 3) 并省略到 int 的转换。

原文由 timgeb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题