У меня есть список:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
и хотите искать элементы, которые содержат строку 'abc'
. Как я могу это сделать?
if 'abc' in my_list:
проверит, 'abc'
существует ли в списке, но он является частью 'abc-123'
и 'abc-456'
, 'abc'
не существует сам по себе. Так как я могу получить все предметы, которые содержат 'abc'
?
Ответы:
Если вы хотите проверить наличие
abc
какой-либо строки в списке, попробуйтеЕсли вы действительно хотите получить все элементы, содержащие
abc
, используйтеисточник
if myitem in myarray:
filter(lambda element: 'abc' in element, some_list)
index()
метод:try: return mylist.index(myitem); except ValueError: pass
Просто добавьте это: если вам нужно сопоставить более чем одну строку, например,
abc
иdef
, вы можете объединить два понимания следующим образом:Вывод:
источник
{s for s in my_list for xs in matchers if xs in s}
(обратите внимание на фигурные скобки, чтобы создать уникальный набор). Может быть легче читать, но может быть медленнее, если большинствоs
значений будет соответствовать, так как выany
эффективно остановитесь на первом совпадении.Используйте,
filter
чтобы добраться до элементов, которые имеютabc
.Вы также можете использовать понимание списка.
Кстати, не используйте слово
list
в качестве имени переменной, так как оно уже используется дляlist
типа.источник
Если вам просто нужно знать, есть ли abc в одном из пунктов, это самый короткий путь:
источник
Это довольно старый вопрос, но я предлагаю этот ответ, потому что предыдущие ответы не справляются с элементами в списке, которые не являются строками (или неким итеративным объектом). Такие элементы могут привести к сбою в понимании всего списка за исключением.
Чтобы изящно обрабатывать такие элементы в списке, пропуская не повторяемые элементы, используйте следующее:
тогда с таким списком:
вы все равно получите соответствующие предметы (
['abc-123', 'abc-456']
)Тест на повторяемость может быть не лучшим. Получил это отсюда: в Python, как мне определить, является ли объект итеративным?
источник
[el for el in lst if el and (st in el)]
больше смысла в данном примере?my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
не нужно слишком усложнять.источник
источник
if 'abc' in item
использоватьitem.find('abc') == -1
.источник
Используйте
__contains__()
метод класса строки Pythons.источник
Я новичок в Python. Я получил приведенный ниже код и сделал его легким для понимания:
источник
источник
источник
import re
mylist=['abc','def','ghi','abcff']
my_list_string=''.join(mylist)
string_to_find="abc"
res=re.findall(string_to_find,my_list_string)
print(res)
Я сделал поиск, который требует от вас ввести определенное значение, затем он будет искать значение из списка, который содержит ваш ввод:
Попробуйте найти «abc».
источник
источник
Мне нужны были индексы списка, которые соответствуют совпадению следующим образом:
вывод
источник
Вопрос: Дайте информацию ABC
источник
Насколько мне известно, утверждение «за» всегда будет занимать время.
Когда длина списка увеличивается, время выполнения также увеличивается.
Я думаю, что поиск подстроки в строке с помощью оператора is немного быстрее.
Но я согласен, что это
any
утверждение более читабельно.источник