簡體   English   中英

如何檢查多個列表中是否存在變量?

[英]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 lschoice in ls結果。

如果這些列表中的一個包含了choiceany將返回真,否則為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)

有關在python中扁平化列表列表的更多詳細信息,請參見此 問題的 答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM