簡體   English   中英

列表理解中的嵌套循環

[英]nested loop in list comprehension

我在l中有一個單詞列表,如果l2中每個元組的第一個索引中存在任何單詞,請刪除整個元組。

我的代碼:

l = ['hi', 'thanks', 'thank', 'bye', 'ok', 'yes', 'okay']
l2 = [('hi how are u', 'doing great'), ('looking for me', 'please hold')]
l3 = [k for k in l2 if not any(i in k[0] for i in l) ]

不知何故,該代碼無法正常工作,我返回了l3的空列表。

我想要

l3 = [('looking for me', 'please hold')]

拆分k[0]以獲得單詞列表:

[k for k in l2 if not any(i in k[0].split() for i in l)]

這樣,它檢查i是否完全匹配一個單詞。

也可以將其解釋為k[0]並非以l任何一個開頭,那么您可以這樣做:

[k for k in l2 if not k[0].startswith(tuple(l))]

集使成員資格測試變得容易。 使用功能過濾列表。

import operator
first = operator.itemgetter(0

l = ['hi', 'thanks', 'thank', 'bye', 'ok', 'yes', 'okay']
l2 = [('hi how are u', 'doing great'), ('looking for me', 'please hold')]

def foo(t, l = set(l)):
    t = set(first(t).split())
    return bool(l & t)

l3 = [thing for thing in l2 if not foo(thing)]

暫無
暫無

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

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