如何使用while循环从列表的右端开始

时间:2016-02-12 03:23:32

标签: python list python-2.7

所以我有一个数字列表,我希望仅在满足条件时才增加。在这种情况下,列表包含数字0-9。

我想要做的是将列表中的9更改为0,如果下一个元素不是9,则添加一个直到它= 9.最后它应该是一个零列表。

这是我到目前为止所做的:

def increment(self):
    i = len(self.number) - 1
    while (self.number[i] == 9):
        self.number[i] = 0
        i -= 1

它将列表编号中的最后一个元素(即9)更改为0.但是我对如何检查8是否= 9而丢失了,如果不是,则添加1直到它为止。所有其他数字也是如此。

如何使用while循环从列表的最后一个元素开始迭代?

3 个答案:

答案 0 :(得分:2)

因此,您要更改self.numbers中不是0的最后一个数字:如果是9,请将其更改为0;否则将其增加1。你可以这样做:

def increment(self):
    for i, num in enumerate(reversed(self.numbers)):
        if num:  # that is, if num is not 0
            self.numbers[-i - 1] = 0 if num == 9 else num + 1
            break  # once one number is changed, we stop

演示:

class Demo:
    def __init__(self):
        self.numbers = list(range(1, 10))

    def increment(self):
        for i, num in enumerate(reversed(self.numbers)):
            if num:
                self.numbers[-i - 1] = 0 if num == 9 else num + 1
                break

demo = Demo()
for _ in range(5):
    print(demo.numbers)
    demo.increment()

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9]  # the original list
[1, 2, 3, 4, 5, 6, 7, 8, 0]
[1, 2, 3, 4, 5, 6, 7, 9, 0]
[1, 2, 3, 4, 5, 6, 7, 0, 0]
[1, 2, 3, 4, 5, 6, 8, 0, 0]

答案 1 :(得分:1)

如果您正在遍历列表并希望从最后一个开始,那么您可以获取列表,反转它,然后迭代。

my_num = [1,2,3]
rev_num = my_num.reverse()
for num in rev_num:
    print num

答案 2 :(得分:1)

我认为这就是你想要的:

def increment(self):
    i = len(self.number) - 1
    while i >= 0:
        while(self.number[i] < 9):
            self.number[i] += 1
        self.number[i] = 0
        i -= 1