Рубрики
Без рубрики

Как упростить Python для петлей

Используйте перечисление () в вашем Python для петлей. Это облегчает жизнь.

Автор оригинала: Alex Lambert.

Почему Python для петлей нужно упростить?

Существует классическая проблема, каждая программист, когда они начинают использовать Python или другие языки с аналогичной особенностью: для петлей могут повторяться непосредственно за большинство повторных документов или проиндексироваться.

Это не звучит как проблема, так как больше вариантов не должно приводить к худшим результатам. Проблема в том, что результаты могут быть хуже, это то, что есть простой способ получить оба лучших мира, что многие программисты просто не используют: перечислять ().

Как это работает

Первое, что я хочу подчеркнуть о работе с Python, состоит в том, что вы можете определить несколько переменных в одной строке с использованием запятых. Это важно перечислять (), так как мы хотим лучшее из обоих миров.

def ret2():
  return 2,22
    
a,b = ret2()
print(a,b)
(2,22)

Далее давайте посмотрим на то, что на самом деле делает перечисление (). Итак, во-первых, я сделаю список, L и вызовите перечисление () на нем.

l = ['a','b','c','d']
e = enumerate(l)

Если мы напечатали е сейчас, это будет выглядеть что-то вроде:


Но, если мы повторяемся через объект, мы получаем:

for i in e:
  print(i)
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')

Таким образом, перечисление () возвращает кортежи с помощью позиционных данных сначала и элемент позиции вторым. Представьте, что мы хотим объединить два матрица 3×3 элементами элементами. За исключением в определенных случаях, мы сделаем что-то другое, чтобы показать перечисление ().

Пример

l = [[4,3,1],[6,7,3],[9,3,5]]
l2 = [[0,2,2],[0,9,4],[5,5,1]]
l_out = []
for i in range(len(l)):
  l_temp = []
  for j in range(len(i)):
    	if l[i][j] == 6 and l2[i][j] == 0:
        	l_temp += [l[i][j]]
       	elif l[i][j] == 3:
        	l_temp += [l2[i][j]]
        else:
        	l_temp += combine(l[i][j], l2[i][j])
  l_out += [l_temp]        
l = [[4,3,1],[6,7,3],[9,3,5]]
l2 = [[0,2,2],[0,9,4],[5,5,1]]
l_out = []
for i,row in enumerate(l):
  l_temp = []
  for j,val in enumerate(i):
    	if val == 6 and l2[i][j] == 0:
        	l_temp += [val]
       	elif val == 3:
        	l_temp += [l2[i][j]]
        else:
        	l_temp += combine(val, l2[i][j])
  l_out += [l_temp] 

Заключение

Используя перечисление (), вы можете вырезать множество вызовов индексации в список. Есть гораздо лучшее использование перечисления (), но вам придется найти их через практику. Полезность () Полезность () может варьироваться в зависимости от создания петли более читаемой, чтобы упростить проблему до меньшего количества строк кода.