2014-01-08 5 views
3

Я пытаюсь понять, что происходит в этом фрагменте кода. Я вижу, что он делает, но процесс, как он туда попадает, ускользает от меня.multi variable for loops python

from itertools import groupby 
lines = ''' 
This is the 
first paragraph. 

This is the second. 
'''.splitlines() 
# Use itertools.groupby and bool to return groups of 
# consecutive lines that either have content or don't. 
for has_chars, frags in groupby(lines, bool): 
    if has_chars: 
     print ' '.join(frags) 
# PRINTS: 
# This is the first paragraph. 
# This is the second. 

Я думаю, что моя путаница окружает несколько переменных в цикл (в данном случае has_chars и frags). Как возможны множественные переменные? Что происходит? Как работает python с несколькими переменными? Что я говорю для python, когда я помещаю несколько переменных в цикл for? Существует ли ограничение на количество переменных, которые вы можете создать в цикле for? Как я могу задать точный вопрос, когда я недостаточно понимаю о программировании, чтобы на самом деле сформировать его?

Я попытался запустить его через визуализатор python, чтобы лучше понять. Эта вещь никогда не делала ничего более ясного для меня. Попытайтесь, как я.

+0

Это сообщение очень полезно в понимании того, как работает группа: http://stackoverflow.com/questions/773/how-do-i-use-pythons-itertools-groupby – frowningpants

+0

См. Здесь: https://github.com /pas-campitiello/python/blob/master/2-NotesSimplePrograms.md#15-lines-itertools –

ответ

2

От python-course

Как мы уже упоминали ранее, Python для цикла итератор на основе для цикла. Он проходит через элементы в любом упорядоченном списке последовательностей, то есть в строке , списках, кортежах, ключах словарей и других итерациях. Цикл цикла Python начинается с ключевого слова «for», за которым следует произвольное имя переменной , в котором будут сохранены значения следующих объектов последовательности, которые пройдены. Общий синтаксис выглядит так:

for <variable> in <sequence>: 
    <statements> 
else: 
    <statements> 

Пусть у вас есть список кортежей, как

In [37]: list1 = [('a', 'b', 123, 'c'), ('d', 'e', 234, 'f'), ('g', 'h', 345, 'i')] 

Вы можете итерацию над ним, как,

In [38]: for i in list1: 
    ....:  print i 
    ....:  
('a', 'b', 123, 'c') 
('d', 'e', 234, 'f') 
('g', 'h', 345, 'i') 

In [39]: for i,j,k,l in list1: 
    print i,',', j,',',k,',',l 
    ....:  
a , b , 123 , c 
d , e , 234 , f 
g , h , 345 , i 

для K, V в os.environ.items():
... Печать "% S =% S" % (к, v)

USERPROFILE=C:\Documents and Settings\mpilgrim 
OS=Windows_NT 
COMPUTERNAME=MPILGRIM 
USERNAME=mpilgrim 

Вы можете прочитать о распаковка, как упоминалось @iCodez. на ссылках Tuples in Python и Unpacking Tuples, они объяснили это правильными примерами.

+0

Теперь я знаю, что то, что мне нужно было искать, было распаковкой или что-то в этом роде. – Faulty