2016-08-26 6 views
1

Я начинаю кода в Python и я наткнулся на этот фрагмент кода:Для петель со списками?

for [x, y] in L: 
    for ix in range(-1, 2): 
     for iy in range(-1, 2): 
      cir = pylab.Circle((x + ix, y + iy), radius=sigma, fc='r') 
      pylab.gca().add_patch(cir) 

на линии 1, я не могу понять, что происходит, потому что я никогда ничего подобного на другом языке программирования не видел. Как это работает?

for [x, y] in L: 

[x, y] - это список? я не знаю.

ответ

0

Да, [x, y] Список с двумя элементами. Для того, чтобы ваш цикл работал, L должен быть списком (или другой повторяемой структурой данных), который содержит кучу списков с двумя элементами. Каждый раз через цикл один из этих списков копируется в [x, y], тогда индивидуальные значения x и y используются в теле цикла.

Попробуйте это и посмотреть, если это имеет смысл:

L = [ [1, 2], [3, 4] ] 

for [x, y] in L: 
    print x 
    print y 
+0

нафига так просто. Спасибо – altarbza

+1

Кронштейны также не нужны. 'для x, y в L:' работает. –

+0

@MarkTolonen имеет разницу между [x, y], x, y и (x, y)? – altarbza

1

L должна быть последовательность списков (или кортежей) с двумя элементами, которые могут перемещаться. Поэтому всякий раз, когда выполняется [x, y] в L: он выбирает каждый элемент в последовательности последовательно один за другим и входит в цикл.

пусть последовательность будет L = [[2,3], [4,5], ['Jeff', 7]] Теперь вот что произойдет, когда for [x,y] in L: будет выполняться это: - первый список в последовательности [2,3] будет подобран и назначен x и y соответственно. И в следующей итерации x и y получите значение 4 & 5 соответственно. Как мудрый в третьей итерации x будет Jeff и y будет 7.

L = [[2,3], [4,5], ['Jeff', 7]] 
count = 0 
for [x,y] in L: 
    count += 1 
    print " Iteration :- %d, \t x :- %s, \t y:- %s" %(count, str(x), str(y)) 
Смежные вопросы