我有一個看起來像的串列:
a_list = ['abc','acd','ade','bef','fba','adf','fac']
我想要串列中的所有專案,如果它包含ab或ac。從上面的例子中,我希望串列是:
b_list = ['abc','acd','fac']
我嘗試了以下方法,但它給了我一個TypeError.
b_list = [x for x in a_list if any(['ab','ac') in x]
uj5u.com熱心網友回復:
的引數any()必須是一系列布林值。您只有一個布林值,這不是您想要的條件。
您想測驗每個ab和ac是否在字串中,而不是它們的元組或串列中。
b_list = [string for string in a_list if any(substring in string for substring in ('ab','ac'))]
uj5u.com熱心網友回復:
你快到了,但你不能針對一個字串交叉檢查多個子字串。你可以做的是使用兩個條件or:
b_list = [x for x in a_list if 'ab' in x or 'ac' in x]
如果您有要檢查的子字串串列,則可以any()在條件中使用,但必須遍歷子字串:
subs = ('ab','ac')
b_list = [x for x in a_list if any(s in x for s in subs)]
uj5u.com熱心網友回復:
你幾乎明白了。您需要遍歷 ['ab','ac'] 以檢查它是否存在于a_list.
b_list = [item for item in a_list if any(x in item for x in ['ab','ac'])]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388036.html
上一篇:代碼無法轉到else塊的問題
