Найти - Пользователи
Полная версия: Список
Начало » Python для новичков » Список
1
sanodin
Нужно изменять в цикле список
например
 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]
py.user.next
нужно обнулять предыдущий элемент, если индекс больше нуля
bismigalis
не понял, после
s=[0,0,0,0,0,0,1]
что должно получиться?

sanodin
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
bismigalis
from collections import deque
d = deque([1, 0, 0, 0, 0, 0, 0])
while not d[-1]:
    d.rotate()
print d
sanodin
Спасибо…
Soteric
Это абстрактная задача или реализация какой-то функциональности?
sanodin
Да, реализация, одна часть общей программы
py.user.next
>>> 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]
>>>
sanodin
Я даже так вчера делал
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
ну это с дополнительным куском кода к общей программе
Спасибо py.user.next
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