a=[[1,2,3],[2,4,3],[5,2,1],[1,2,7]]
[1,2,*]
без перебора списка. Как это сделать силами стандартного python? lst = [[1,2,3],[2,4,3],[5,2,1],[1,2,7]]
prefix = [1, 2]
def search(lst, prefix):
l = len(prefix)
for item in lst:
if item[:l] == prefix:
yield item
print list(search(lst, prefix)))
length = len(prefix)
results = [item for item in lst if item[:length] == prefix]
Нужно выделить все подсписки, которые подходят под [1,2,*] без перебора списка.Если вы хотите выбрать все элементы первого уровня вложенности ("подсписки"), удовлетворяющие условию, без рассмотрения каждого из них (без перебора), то никак. В случае, если список a большой, вы можете рассматривать каждый элемент при добавлении его в список a и, в случае выполнения условия, добавлять его (или его индекс) в другой список/множество, хранящий/хранящее совпадения. Общая "сложность" будет такой же, но она, при соответствующей организации кода, будет "размазана" во времени, что иногда может быть предпочтительно. Но в таком случае паттерн должен быть известен заранее.