所以我有一个数字列表,我希望仅在满足条件时才增加。在这种情况下,列表包含数字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循环从列表的最后一个元素开始迭代?
答案 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