#python #for-loop
#python #для цикла
Вопрос:
Добрый день,
Я хотел бы спросить, есть ли лучшие альтернативы (или просто при написании кода) для вложенных for
циклов? Например, прямо сейчас я пишу это так:
list_a = [1, 1, 2 ,3]
list_b = [[1, 2], [3, 10]]
for a in list_a:
for b in list_b:
if a >= b[0] and a <= b[1]:
# Do something here
break
Комментарии:
1. Вы хотите прерваться только из внутреннего цикла или из обоих циклов?
2. это полностью зависит от того, что вы пытаетесь сделать.
3. Вам нужно обязательное
break
?4. @devguy Только из внутреннего цикла!
Ответ №1:
Это действительно зависит от того, что вы пытаетесь сделать. Если вы знаете, что оба списка имеют одинаковую длину, то вы можете использовать один цикл. Однако сначала вам нужно flatten
создать свой вложенный список for list_b
(что почти похоже на выполнение двух циклов for, но более лаконично и быстрее).
Если вы спрашиваете о вложенных циклах для сортировки заданного массива, то есть много ресурсов, которые вы могли бы найти в Google или YouTube, которые очень полезны (сортировка слиянием, быстрая сортировка).
Во всяком случае, вот пример кода:
list_a = [1, 1, 2 ,3]
list_b = [[1, 2], [3, 10]]
flattened_b = [item for sublist in list_b for item in sublist]
for idx in range(len(list_a)):
print(list_a, flattened_b)
Интересный блог о сглаживании списков: http://rightfootin.blogspot.com/2006/09/more-on-python-flatten.html
Комментарии:
1. » (что почти похоже на выполнение двух циклов for, но более лаконично и быстрее)» на самом деле не быстрее, нет. На самом деле, это почти наверняка медленнее.