Форум сайта python.su
31
Нужно изменять в цикле список
например
s=[0,0,0,0,0,0,0] #в цикле for список должен меняться от нулевого индекса до последнего по очереди на единицу s=[1,0,0,0,0,0,0] s=[0,1,0,0,0,0,0] s=[0,0,1,0,0,0,0] .... #получается менять по очереди но все на единицу s=[1, 1, 1, 1, 1, 1, 1]
Офлайн
857
нужно обнулять предыдущий элемент, если индекс больше нуля
Офлайн
47
не понял, после
s=[0,0,0,0,0,0,1]
Офлайн
31
bismigalisтак и должно остаться, список должен меняться до этого значения
не понял, после
s=[0,0,0,0,0,0,0] for i in range(len(s)): s[i] += 1
s=[0,0,0,0,0,0,0] for i in range(len(s)): s[i] += 1 for i in range(len(s)): if s[i]==1: s[i] -= 1 print s
Отредактировано sanodin (Сен. 3, 2013 22:34:22)
Офлайн
47
from collections import deque d = deque([1, 0, 0, 0, 0, 0, 0]) while not d[-1]: d.rotate() print d
Офлайн
31
Спасибо…
Офлайн
20
Это абстрактная задача или реализация какой-то функциональности?
Офлайн
31
Да, реализация, одна часть общей программы
Офлайн
857
>>> def f(lst): ... lst[0] = 1 ... print(lst) ... for i in range(1, len(lst)): ... lst[i - 1], lst[i] = 0, 1 ... print(lst) ... >>> f([0] * 7) [1, 0, 0, 0, 0, 0, 0] [0, 1, 0, 0, 0, 0, 0] [0, 0, 1, 0, 0, 0, 0] [0, 0, 0, 1, 0, 0, 0] [0, 0, 0, 0, 1, 0, 0] [0, 0, 0, 0, 0, 1, 0] [0, 0, 0, 0, 0, 0, 1] >>>
Офлайн
31
Я даже так вчера делал
cp=[0,0,0,0,0,0,0,0,0,0] letter=[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9] for x in letter: f=x-1 for i in cp: cp[x] = 1 cp[f]=0 print cp
Отредактировано sanodin (Сен. 4, 2013 10:38:03)
Офлайн