[英]How can I check if a variable exists in multiple lists?
这是我的代码摘录!
division = ["Division","Divide","/","div"]
multiplication =["*","x","times","multiply","multiplication","multiple"]
subtraction = ["-",'minus','subtract','subtraction']
addition = ['+','plus','addition','add']
root = ['root','squareroot','square root']
square = ['square','squared','power 2']
choice = input('calculation type')
print(choice == (division or multiplication or subtraction or addition))
到目前为止,它仅给出“ False”。 如何检查多个列表中是否存在变量? 我试图在列表内创建列表,但仍然出现“ False”,这是该代码……
division = ["Division","Divide","/","div"]
multiplication = ["*","x","times","multiply","multiplication","multiple"]
subtraction = ["-",'minus','subtract','subtraction']
addition = ['+','plus','addition','add']
root = ['root','squareroot','square root']
square = ['square','squared','power 2']
basic_double = [division,multiplication,subtraction,addition]
basic_single = [root,square]
choice = input('calculation type')
print(choice == basic_double or basic_single)
任何帮助,将不胜感激! :D谢谢!!!
测试choice
是否在any
列表中:
any(choice in ls for ls in [division, multiplication, subtraction, addition])
如果给定可迭代的至少一个元素为真,则any
返回True。
choice in ls
测试了choice是否为列表的元素。
choice in ls for ls in [division, multiplication, subtraction, addition]
是一个生成器理解,这意味着它是一个迭代器,它为[division, multiplication, subtraction, addition]
任何可能的ls
返回choice in ls
的choice in ls
结果。
如果这些列表中的一个包含了choice
, any
将返回真,否则为false。
您可以使用itertools.chain()
来检查所有列表中的选项,如下所示:
if choice in chain(division, multiplication, subtraction, addition):
现在,您正在将一个字符串选择与一系列列表进行比较。 当您比较两种不同的数据类型时,这永远不会是True。
您应该使用“ in”关键字检查每个列表
if choice in division:
#this returns true if the String set to choice is in the list of objects in division.
else if choice in multiplication:
.
.
.
这种比较将帮助您在要查找的列表中找到单词。
如果要检查选择是否在示例中提供的四个列表中的任何一个中:
if choice in division + multiplication + subtraction + addition:
# do something when its in any of it.
...
现在,您的代码正在print函数中进行以下比较:
choice == ["Division","Divide","/","div"] or ["*","x","times","multiply","multiplication","multiple"] or ["-",'minus','subtract','subtraction'] or ['+','plus','addition','add']
由于短路 ,减少到:
choice == ["Division","Divide","/","div"]
因为choice
不是列表,所以该值始终为False
。
我将对包含[division, multiplication, subtraction, addition]
的列表进行[division, multiplication, subtraction, addition]
然后测试以查看choice
是否在该列表中。
flattened = [item for ls in [division, multiplication, subtraction, addition] for item in ls]
print(choice in flattened)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.