@Shura
Shura
03 Jul 2017

Удивительное дело в питоне - никакой демократии, сплошная диктатура!

for i in range(0,10):
    print i
    i=5

Результат выполнения:

0
1
2
3
4
5
6
7
8
9

Т.е. переменную счётчика цикла нельзя менять! Причём никакой ошибки не выдаётся, полное ощущение, что всё работает, но нет.
После анархии в перле и C это выглядит дико

03 Jul 2017

Это такой тралинк в 2017 или что?

03 Jul 2017

blaze, в циле for нельзя поменять счётчик цикла, потому что он где-то внутри range. Т.е. for не числовой, а итерационный. Это немного непривычно.

#owssz/2 в ответ на /1
03 Jul 2017

Shura,

>>> for i in range(0,10):
...     print i
...     i=5
...     print i
... 
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
5
#owssz/3 в ответ на /2
03 Jul 2017

blaze, цикл не станет бесконечным.
По аналогии на C

for(i=0;i<10;i++)
{
    print(i);
    i=5;
}

получили бесконечный цикл

#owssz/4 в ответ на /3
03 Jul 2017

Shura, тебе нужен while со счётчиком

#owssz/5 в ответ на /4
03 Jul 2017

blaze, да, просто в while это выглядит немного странно. Обычно for предлагает такие услуги. В питоне - нет

#owssz/6 в ответ на /5
03 Jul 2017

blaze, кстати, из-за неимения оператора инкремента в питоне не пройдёт вот такая изящная конструкция

i=0;
while(i++<10)
{
    print(i);
}

Придётся инкременировать i явно, отдельной строкой. Причём следить, чтобы инкремент случился, даже если итерация была прервана где-то на середине командой continue

#owssz/7 в ответ на /5
03 Jul 2017

изящная конструкция
i++<10

you lost me

#owssz/9 в ответ на /7
03 Jul 2017

Советую разобраться, как работает for-цикл, и что возвращает range().

#owssz/17 в ответ на /4
03 Jul 2017

TWT, а как сейчас модно сравнивать каждый элемент массива с каждым?

03 Jul 2017

TWT, кстати print в питоне норм, мне нравится, разворачивает массивы и структуры. Можно вывести на экран и посмотреть что там такое лежит.

03 Jul 2017

Он ничего не разворачивает, он вызывает .__str__().

#owssz/18 в ответ на /12
03 Jul 2017

postman, я понял, что вызывается какой-то метод объекта вывода, потому что не родные объекты тоже красиво отображаются. Это удобно

#owssz/19 в ответ на /18
03 Jul 2017

TWT, тут разные массивы. А как сравнивать элемнеты между собой в одном массиве? zip(a,a)? Там можно? Как в этом случае исключать сравнение элемента с самим собой?

03 Jul 2017

TWT, помогла магия itertools.combinations. Это как раз для моего случая

04 Jul 2017

Shura, не вижу никакой дикости. Для меня скорее дикость то что ты счётчику пытаешься какое-то значение присвоить тем самым пытаясь изменить число итераций.

04 Jul 2017

SetazeR, ну и опять же как уже выше обозначили range тебе возвращает итератор на список вида [0,1,2,3,4,5,6,7,8,9] и при каждой итерации просто присваивается следующий элемент из этого списка.

#owssz/22 в ответ на /21
04 Jul 2017

Shura, кстати весьма рекомендую книжку "Изучаем Python" Марка Лутца. http://flibusta.is/b/395068
Очень годная вещь для обучения Питону.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.