2013-11-02 136 views
0

如何確定一個字符串是否在每個列表中?例如:如果每個列表中的項目?

listEven = ["0", "2", "4", "6", "8"] 
listOdd = ["1", "3", "5", "7", "9"] 
listPrimes = ["2", "3", "5", "7"] 

listOfLists = ["listOdd", "listPrimes"] 
if "9" in each(listOfLists): 
    print("Math is broken") 
else: 
    print("Good, 9 is still not prime") 

基本上,是否有一個函數檢查列表中的每個列表中是否有東西?

+0

來吧,先學習一些python基礎知識。 – Christian

+0

listOfLists是兩個字符串的列表 – yuvi

回答

4

首先,不要在這裏使用引號。相反申報表的名單爲:

listOfLists = [listOdd, listPrimes] 

也許這將是更好地使用整數,而不是字符串作爲列表元素以及(即3而不是"3")。

要回答你的問題,你可以使用all()

if all("9" in l for l in listOfLists): 
0

我認爲這可能是一種方式來實現你所要求的:

listEven = ["0", "2", "4", "6", "8"] 
listOdd = ["1", "3", "5", "7", "9"] 
listPrimes = ["2", "3", "5", "7"] 

listOfLists = [listEven, listOdd, listPrimes] 

def findNumber(number, list): 
    for lists in list:  
     if number in lists: 
      print ('Found it') 

findNumber('9', listOfLists) 
0

用列表的列表處理是在這種情況下疼痛和不必要的。要做到這一點最簡單的方法是簡單地將所需的列表合併爲一個:

masterList = listOdd + listPrimes 

然後,它只是:

if number in masterList: 

現在,這使用更多的內存和速度低於它需要從一些數字被複制,並且Python必須查看每個項目。因此,使用一組:

masterSet = set(listOdd) | set(listPrimes) 

然後if number in masterSet是非常快。

相關問題