G.A*_*ong 6 python contains python-3.x
我在使用Python in运算符时遇到了一些麻烦.sltn包含0,1和2,因为我检查了上一行(带有打印,表示它包含("0", "1", "2")),但由于某种原因,(1, 2, 3)它没有检测到它.
*SLTN是阵列*
这是我的代码:
# 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
Run Code Online (Sandbox Code Playgroud)
对不起,但答案似乎没有解决我的问题:/
嘿,由于某种原因,我不明白这不完成循环并将其标记为真,我已经测试了包含1,2和3的sltn,并且没有检测到它们.
# 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
Run Code Online (Sandbox Code Playgroud)
Soloution
我必须从中做到
# 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
Run Code Online (Sandbox Code Playgroud)
成
# 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
Run Code Online (Sandbox Code Playgroud)
tim*_*geb 22
使用in关键字是调用对象__contains__方法的简写.
>>> a = [1, 2, 3]
>>> 2 in a
True
>>> a.__contains__(2)
True
Run Code Online (Sandbox Code Playgroud)
因此,("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
Run Code Online (Sandbox Code Playgroud)
另请注意,元组的元素是字符串.您可能想要检查元组中的任何或所有元素 - 将这些元素转换为整数后 - 都包含在列表中.
要检查列表中是否包含元组的所有元素(作为整数),请使用
>>> sltn = [1, 2, 3]
>>> t = ("0", "2", "3")
>>> set(map(int, t)).issubset(sltn)
False
Run Code Online (Sandbox Code Playgroud)
要检查列表中是否包含元组的任何元素(作为整数),您可以使用
>>> sltn_set = set(sltn)
>>> any(int(x) in sltn_set for x in t)
True
Run Code Online (Sandbox Code Playgroud)
并利用懒惰的评估any执行.
当然,如果你的元组包含没有特殊原因的字符串,只需使用(1, 2, 3)并省略转换为int.
if ("0","1","2") in sltn
Run Code Online (Sandbox Code Playgroud)
您正在尝试检查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
Run Code Online (Sandbox Code Playgroud)