Поиск строки в python - два списка - PullRequest
0 голосов
/ 13 мая 2019

Скажем, у меня есть строковый массив A = ['abcbdefcd'] и другой строковый массив T = ['ab', 'abc', 'def', 'cd', 'abcd']

Я хочу написать функцию, которая может выполнять поиск в массиве A, и если она находит строку в T, которая находится в A, возвращает true или false.

Я думал, что попробую

для текста в A: если текст в T: print (true)

остальное:

печать (ложь)

Но это не дает мне того, что я ищу, может кто-нибудь предложить что-то еще?

Ответы [ 3 ]

1 голос
/ 13 мая 2019

Если я правильно понял вопрос, вы в основном хотите найти пересечение 2 списков. Если список T содержит элементы, которые также присутствуют в списке A, верните true, иначе верните false.

Для этого у вас есть множество питонических решений:

Метод 1 :

bool(set(a) & set(b))

т. Попробуйте что-то вроде этого.

a = ['abc','bca','av']
b = ['ab','bc']
print(bool(set(a) & set(b))) # this would return true in this case

Другой способ сделать это - использовать выражение-генератор, выполняющее итерацию по спискам:

a = set(a); any(i in a for i in b)

И И наконец Вы можете использовать метод дизъюнктов замороженных множеств:

not set(a).isdisjoint(b)
1 голос
/ 13 мая 2019

Для вашего конкретного запроса:

a = ['abcbdefcd'] 
t = ['ab', 'abc', 'def', 'cd', 'abcd']

for text in t:
    print(text in a[0])

выход:

True
True
True
True
False

некоторые заметки:

  1. назовите вашу переменную строчными буквами
  2. вы можете использовать t = 'abcbdefcd' вместо t = ['abcbdefcd'], и код будет if text in t вместо if text in t[0]
1 голос
/ 13 мая 2019

это должно достичь того, что вы ищете,

A =  ['abcbdefcd']

T =  ['ab', 'abc', 'def', 'cd', 'abcd']

result = False
for text in A:
    for sub_text in T:
        if (sub_text in text):
            result = True
            break

if (result):
    print('True')
else:
    print('False')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...