Найти - Пользователи
Полная версия: Две строчки list.append() в цикле for
Начало » Python для новичков » Две строчки list.append() в цикле for
1
jam
Сначала надумал отрастить списку хвост:
listt = [1, 2, 3]
for elem in listt:
if len(listt) < 20: # ограничение во избежание бесконечного цикла
listt.append(elem)
print listt
>>> [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2] # как и ожидал, получил повторение списка
Потом решил в промежутки что-нибудь добавить и просто дописал ещё одну строчку с append(). Для наглядности оставил только один элемент списка:
listt = [1]
for elem in listt:
if len(listt) < 50: # удлинил получающийся список
listt.append(elem)
listt.append('*')
print listt
>>> [1, 1, '*', 1, '*', '*', '*', 1, '*', '*', '*', '*', '*', '*', '*', 1, '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', 1, '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*']
Ожидал, что будет добавляться по одному знаку после прохода списка, но не был уверен. Однако такого точно не ожидал…
Число звёздочек между единицами возрастает очень красиво:
1
3
7
15
31
63
127
255
511
1023

Как так? Где что читать?
FishHook
1.
>>> l=[1,2,3]
>>> l*=10
>>> l
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
FishHook
2.
>>> l=[1,2,3]
>>> l+="*"
>>> l
[1, 2, 3, '*']
>>> l*=10
>>> l
[1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*', 1, 2, 3, '*']
Александр Кошелев
jam
Как так? Где что читать?
Что значит “что читать?”? Читать нужно свой код, в которм вы запрограммировали такой алгоритм. Пройдитесь по нему отладчиком.
py.user.next
jam
Ожидал, что будет добавляться по одному знаку после прохода списка, но не был уверен. Однако такого точно не ожидал…
http://docs.python.org/reference/compound_stmts.html#the-for-statement
Isem
jam
Ожидал, что будет добавляться по одному знаку после прохода списка, но не был уверен. Однако такого точно не ожидал…
После первой итерации listt =
После второй итерации listt =
После третьей итерации istt = , потому что elem = ‘*’
Ну и так далее, 4й elem опять равен ‘1’.
Читаем Кнута и думаем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB