Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2015 05:02:50

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for

Всем привет.
При объяснении цикла for дается такой пример

Откуда становится известно. что element это то что внутри списка. Ведь вместо element я могу написать что угодна например abracadabra.
И если прогнать цикл в ручную начиная с i=0 как в формуле spisok=element+2
element принимает значение 0.

[/spisok = [0,10,20,30,40,50,60,70,80,90]
>>> i = 0
>>> for element in spisok:
	spisok[i] = element + 2
	i = i + 1
 
>>> spisok
[2, 12, 22, 32, 42, 52, 62, 72, 82, 92]]

Отредактировано roggerg (Март 15, 2015 03:52:36)

Офлайн

#2 Март 12, 2015 05:48:46

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Цикл for

roggerg
код оформляется в тегах CODE иначе затирается содержимое списков. Исправьте.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 12, 2015 07:32:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Цикл for

roggerg
Откуда становится известно. что element это то что внутри списка. Ведь вместо element я могу написать что угодна например abracadabra.
А что именно вызывает удивление? Это же динамический язык.

# -*- coding:utf-8 -*-
class _for:
    def __init__(self, iterable, **kwargs):
        if len(kwargs.items()) != 1:
            raise SyntaxError()
        counter_name, counter_start = kwargs.items()[0]
        self.iterable = iter(iterable)
        setattr(self, counter_name, counter_start)
        setattr(self, "get_counter", lambda: getattr(self, counter_name))
        setattr(self, "set_counter", lambda value: setattr(self, counter_name, value))
    def __iter__(self):
        return self
    def next(self):
        counter = self.get_counter()
        self.set_counter(counter + 1)
        return self.iterable.next()
spisok = [12, 23, 44, 55, 67, 2, 45]
print "element"
f = _for(spisok, element=0)
while 1:
    try:
        val = next(f)
        print val, f.element
    except StopIteration:
        break
print "abracadabra"
f = _for(spisok, abracadabra=3)
while 1:
    try:
        val = next(f)
        print val, f.abracadabra
    except StopIteration:
        break



Офлайн

#4 Март 13, 2015 03:44:46

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for

Для меня как то не очевидно что element это элементы списка. Как мне кажется не хватает связки между
element и элементами в списке.

Офлайн

#5 Март 13, 2015 17:09:17

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

Цикл for

roggerg
Как мне кажется
Когда кажется креститься над.

Ну, а если серьёзно, то те практики не хватает и знания мат части. Практикуйся и обычные вещи перестанут казаться странными.

Офлайн

#6 Март 14, 2015 05:21:39

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for

Вот нашел на хабре такое определение

Второй вид циклов в Пайтон – цикл for. Он аналогичен циклу foreach других языков. Его синтаксис условно таков.

for переменная in список:
команды

теперь стало понятно, это получается просто такой синтаксис для этого цикла.

Офлайн

#7 Март 14, 2015 05:21:42

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл for

Вот нашел на хабре такое определение

Второй вид циклов в Пайтон – цикл for. Он аналогичен циклу foreach других языков. Его синтаксис условно таков.

for переменная in список:
команды

теперь стало понятно, это получается просто такой синтаксис для этого цикла.

Офлайн

#8 Март 14, 2015 16:24:51

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Цикл for

roggerg
Хабр не читай, лучше читай документацию.

for <переменная для присваивания> in <объект который обходим>:
     <тело цикла >

for'ом перебирается любой объект поддерживающий итерацию, а не только список.

Пример у тебя в начале не питоновский, я б так сделал:
list = [0,10,20,30,40,50,60,70,80,90]
for i in range(len(list)):
    list[i] = list[i]+2
print (list)

Офлайн

#9 Март 14, 2015 16:30:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Цикл for

boligolov
Пример у тебя в начале не питоновский, я б так сделал:
Жесть какая. У тебя дескать весьма питоновский код? А если прочитать первые десять страниц Лутца для начала? Что то там про map, про списковые выражения?



Офлайн

#10 Март 14, 2015 17:29:13

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Цикл for

for -
это не функция, мать твою



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version