Как проверить, находится ли строка из списка внутри другого списка?

#python #list

#python #Список

Вопрос:

Допустим, у меня есть 2 списка:

 a=['LOL','GG','rofl']
b=['5 KEK muh bobo LOL', 'LOL KEK bobo bobo GG']
  

Как мне проверить, находится ли первый элемент в a в первом элементе b?

Ответ №1:

Только это:

 a[0] in b[0] # will return True or False
  

может быть, вы хотите проверить их все:

 set(i for i in a for j in b if i in j)
  

или

 {i for i in a for j in b if i in j} #Python 2.7 
  

Ответ №2:

Python на самом деле очень надежный. Вы можете просто сделать.

 a[0] in b[0]
  

Ответ №3:

Если вам нужно только знать, есть ли она в строке или нет:

 if a[0] in b[0]: pass
  

Однако проблема в том, что оба из них вернут true:

 if "LOL" in "a b LOL c": pass
if "LOL" in "a b xxLOLxx c": pass
  

Итак, если вы заботитесь о словах и простом присутствии, если ваши разделители согласованы:

 if a[0] in b[0].split(" "): pass
  

Если вам нужно знать, какая позиция слова:

 idx = b[0].split().index(a[0]) # note, throws a ValueError if not in the list
  

Если вам нужно знать позицию в строке:

 idx = b[0].find(a[0]) # returns -1 if not found
  

Если вы хотите знать, находится ли каждый элемент из a в соответствующем элементе b (игнорирует дополнительные записи в любом списке):

 [(i[0] in i[1]) for i in zip(a, b)] # to check for simple membership
[(i[0] in i[1].split()) for i in zip(a, b)] # to check for whole words
  

Ответ №4:

Вы можете просто сделать:

 a[0] in b[0]
  

который вернет значение True, если первый элемент a может быть найден в первом элементе b, в противном случае он вернет значение False .