Как искать список, который находится во вложенном списке (список списка) без цикла в Python?

Я прекрасно это понимаю.

sample=[[1,[1,0]],[1,1]] [1,[1,0]] in sample 

Это вернет True.

Но я хочу здесь сделать это.

 sample=[[1,[1,0]],[1,1]] [1,0] in sample 

Я хочу, чтобы return был True, но это возвращает False. Я могу сделать это:

 sample=[[1,[1,0]],[1,1]] for i in range(len(sample)): [1,0] in sample[i] 

Но мне интересно, есть ли какой-нибудь лучший или эффективный способ сделать это.

4 Solutions collect form web for “Как искать список, который находится во вложенном списке (список списка) без цикла в Python?”

вы можете использовать цепочку из itertools, чтобы объединить списки, а затем выполнить поиск в возвращенном списке.

 >>> sample=[[1,[1,0]],[1,1]] >>> from itertools import chain >>> print [1,0] in chain(*sample) True 

Рекурсивное решение, которое будет работать для произвольной (макс. Рекурсии) в сторону) глубокого вложения. Также работает, если какие-либо элементы самого внешнего списка сами не являются итераторами.

 from functools import partial def contains_nested(some_iterable, elmnt): try: if elmnt in some_iterable: return True except TypeError: # some_iterable is not iterable return False else: return any(map(partial(contains_nested, elmnt=elmnt), some_iterable)) 

Я не знаю, как решить это полностью без цикла. Но в Python вы никогда не должны писать for i in range(len(sample)) .

Итак, ответ на ваш вопрос: да, есть лучший и быстрый способ, которым вы могли бы зацикливать свой список for i in sample

То, как Python обрабатывает петли, очень быстро работает и очень хорошо работает с большим количеством entriey (более 50 000).

Вы можете сгладить список sample и затем выполнить поиск в этом сплющенном списке:

 > sample = [[1, [1, 0]], [1, 1]] > [1, 0] in [item for sublist in sample for item in sublist] > True 
  • pythonic способ связать элементы списка с их индексами
  • Элемент доступа в списке с использованием индексов, хранящихся в другом списке
  • Сохраняет ли список python объект или ссылку на объект?
  • Различные способы очистки списков
  • создавать списки уникальных имен в for -loop в python
  • Можно сразу добавить несколько списков? (Python)
  • вычисление частот во вложенном списке
  • TypeError: только целые массивы с одним элементом могут быть преобразованы в индекс 3
  • Python - лучший язык программирования в мире.