[英]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.