如果只有 list1 中的所有元素都出現在 list2 中,我有一個關于回傳 True 的串列的問題,否則你會得到錯誤。我需要在此代碼中附加什么來查找串列 1 中的所有元素是否都出現在串列 2 中。
def in_list(list1,list2):
for i in list1:
if i in list2:
return True
else:
return False
print(in_list(['x',2,4.5,'a'],[5,4.5,'a','x',29,'Hello',2,75]))
print(in_list(['Y',22,4,],[5,4.5,'a','x',29,'Hello',2,75]))
我得到第二個錯誤,但如果我將引數附加到 list1 中顯示在 list2 中,我得到 True
uj5u.com熱心網友回復:
def in_list(list1,list2):
for i in list1:
if i not in list2:
return False
return True
或者:
return all(item in list2 for item in list1)
uj5u.com熱心網友回復:
您在這里絕對走在正確的軌道上,但正如評論中指出的那樣,您在第一次迭代中回傳的是 True,這不能給您想要的東西。
嘗試在函式上添加一個變數來跟蹤它,如下所示:
def in_list(list1,list2):
all_in_list1 = True # make this default because of check
for i in list1:
if i not in list2:
all_in_list1 = False
return all_in_list1
uj5u.com熱心網友回復:
這里的問題是您只檢查第一個元素list1以查看它是否在list2并根據結果回傳 True/False。
您必須檢查是否所有元素list1都在中list2,因此您可以使用all函式:
def in_list(list1,list2):
return all(i in list2 for i in list1)
出于您的目的,在這里使用似乎更自然set.issubset,它檢查是否list1是的子集list2:
def in_list(list1,list2):
return set(list1).issubset(list2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425609.html
上一篇:為什么將兩個Counter.items()與<=進行比較會產生意想不到的結果?
下一篇:我需要從串列中搜索字串以查找模式
