Проверьте, содержит ли элемент списка Python строку внутри другой строки - PullRequest
474 голосов
/ 30 января 2011

У меня есть список:

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']

и хотите найти элементы, содержащие строку 'abc'. Как я могу это сделать?

if 'abc' in my_list:

проверит, существует ли 'abc' в списке, но оно является частью 'abc-123', а 'abc-456', 'abc' не существует само по себе. Так как же я могу получить все предметы, которые содержат 'abc'?

Ответы [ 15 ]

0 голосов
/ 26 января 2019

Я выполнил поиск, который требует от вас ввода определенного значения, затем он будет искать значение в списке, который содержит ваш ввод:

my_list = ['abc-123',
        'def-456',
        'ghi-789',
        'abc-456'
        ]

imp = raw_input('Search item: ')

for items in my_list:
    val = items
    if any(imp in val for items in my_list):
        print(items)

Попробуйте найти 'abc'.

0 голосов
/ 04 июля 2018
mylist=['abc','def','ghi','abc']

pattern=re.compile(r'abc') 

pattern.findall(mylist)
0 голосов
/ 16 июня 2018

Вопрос: Дайте информацию abc

    a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']


    aa = [ string for string in a if  "abc" in string]
    print(aa)

Output =>  ['abc-123', 'abc-456']
0 голосов
/ 16 марта 2018
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']

for item in my_list:
    if (item.find('abc')) != -1:
        print ('Found at ', item)
0 голосов
/ 12 мая 2015

Насколько мне известно, оператор 'for' всегда будет занимать время.

Когда длина списка увеличивается, время выполнения также увеличивается.

Я думаю, что при поискеподстрока в строке с оператором 'is' немного быстрее.

In [1]: t = ["abc_%s" % number for number in range(10000)]

In [2]: %timeit any("9999" in string for string in t)
1000 loops, best of 3: 420 µs per loop

In [3]: %timeit "9999" in ",".join(t)
10000 loops, best of 3: 103 µs per loop

Но я согласен, что оператор any более читабелен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...