2017-08-28 214 views
3

我想查找列表中是否包含子字符串列表。例如,我有:Python列表中的字符串列表中的子字符串

string_list = ['item1', 'item2', 'subject3', 'subject4'] 

,我想找到,如果「項目」或「主體」包括在string_list的任何項目子

substrings = ['item', 'subject'] 

的名單。單獨來看,我會做這樣的事情:

any('item' in x for x in string_list) 

本工程爲一個字符串,但我想找到搜索的字符串列表中兩個字符串的一個漂亮的方式。

+1

你可以嵌套'a或者編寫一個更復雜的生成器表達式來創建交叉產品,或者使用'itertools.product'來爲你做。 – jonrsharpe

+0

您的預期成果是什麼?你想匹配'string_list'開頭的'substring'項目,還是完全匹配? – Alexander

+0

我只是想真或假的字符串列表是否包含子字符串列表中的任何字符串。 –

回答

2
any(y in x for x in string_list for y in substrings) 
1

由於子實際上是在開始時,你可以使用str.startswith可以採取前綴的元組:

any(x.startswith(('item', 'subject')) for x in string_list) 
1

你可以試試這個:

string_list = ['item1', 'item2', 'subject3', 'subject4'] 

substrings = ['item', 'subject'] 

any(any(b in i for b in substrings) for i in string_list) 

輸出:

True 
相關問題