[英]How to check if a list contains items from another lists sublist? [on hold]
我知道這個問題已經在這里被問過好幾次了,我經歷了其中的大部分,但由於某種原因,我無法將這些解決方案用於我當前的問題。
我有一個包含 11 個子列表的列表: list_a = [[1,2,3],[2,3,4],[3,4,5].....[11,12,13]]
我還有一個在 1 到 13 范圍內隨機生成的長度為 9 的列表:
list_b = [1,4,7,8,2,3,8,9]
我想創建一個 function 迭代 list_a 的子列表,並且僅當子列表中的所有項目都存在於 list_b 中時才返回 true。 我嘗試了“所有” function 但在我的情況下它似乎不起作用,因為它需要列表中的所有項目而不是子列表。
for i in list_a:
if all(a in i for a in list_b):
print ('Yes')
先感謝您。
你只是把你的all()
邏輯扭曲了。 您需要檢查子列表中的每個項目是否在list_b
中(而不是檢查list_b
中的每個項目是否在子列表中)。
將您的all()
邏輯更改為:
all(a in list_b for a in i)
順便說一句,如果您將list_b
更改為set ,它會更有效率並簡化事情。
您的想法是正確的,但是您正在檢查 list_b 中的元素是否存在於list_b
的子列表中,而您的要求list_a
相反。 您可以在此處使用set
操作:
>>> list_a = [[1,2,3],[2,3,4],[3,4,5],[11,12,13]]
>>> list_b = [1,4,7,8,2,3,8,9]
>>> all(set(a).issubset(set(list_b)) for a in list_a)
False
或者
>>> list_a = [[1,2,3],[2,3,4],[3,4,8]]
>>> all(set(a).issubset(set(list_b)) for a in list_a)
True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.