2015-10-19 2 views
-2

У меня есть список:Глядя на содержание списка, в другом списке

alist=[['able'], ['acre'], ['bale'], ['beyond'], ['binary'], ['boat'], ['brainy'], ['care'], ['cat'], ['cater'], ['crate'], ['lawn'], ['list'], ['race'], ['react'], ['sheet'], ['silt'], ['slit'], ['trace'], ['interject'], ['contradict'], ['oration'], ['understandable']] 

и другой список:

blist=['co', 'de', 'dis', 'inter', 'non', 'not', 'post', 'pre', 're', 'sub', 'trans'] 

Теперь мой вопрос, я хочу, чтобы проверить содержимое список B соответствует ни одному из содержания в список, другими словами, если список имеет какой-либо из перечисленных префиксов вниз в списке B

В конце концов, он должен дать мне результат, как «со» появляется один раз в списке, «между» появляется один раз в списке и т.д.

редактирования, вот код, который я пытался, но не получилось , может кто-нибудь сказать мне, что в этом плохого?

for word in alist: 
    if blist in word: 
     print word 
+0

* Теперь мой вопрос, я хочу, чтобы проверить содержимое списка B соответствует любому из содержания в списке, другими словами, если список имеет любой из префиксов, перечисленных вниз в списке B * - это не вопрос –

+2

Вы уже пробовали что-нибудь, что не работает? –

+1

Можете ли вы показать код, который вы в настоящее время пытаетесь использовать? –

ответ

1

Кажется, нет причин размещать ваши строки внутри вложенных списков. Так вот что я хотел бы сделать:

import collections 
import itertools 

alist = [s for sub in alist for s in sub] 
counts = collections.defaultdict(int) 
for s, a in itertools.product(blist, alist): 
    if a.startswith(s): 
     counts[s] += 1 
+0

потому что OP упомянул * префиксы *, возможно, измените: 'if s == a [: len (s)]'? –

+0

Кажется, я получаю только одно слово (транс). – Gekko

Смежные вопросы