我正在做一些练习问题而且有一个程序要求我将列表中的数字更改为99,只要前面的数字是偶数。我遇到了麻烦,当我将数字更改为99时,当它移动到下一个数字时,它会检查99是否是偶数,我不想要,我希望它检查原始值我在那里,而不是我改变它。
d = [9, 8, 2, 15, 6, 33, 10, 4]
i = 1
while i < len(d) - 1 :
if d[i-1]%2 == 0 :
d[i] = 99
i = i + 1
print d
返回[9, 8, 99, 15, 6, 99, 10, 4]
我希望它返回[9,8,99,99,6,99,10,99]
如果有意义的话,如何在不更改原始值的情况下将99添加到原始列表中?不能使用像pop或insert这样的列表方法。
答案 0 :(得分:5)
试试这个。
d = [9, 8, 2, 15, 6, 33, 10, 4]
for i in reversed(xrange(1, len(d))):
d[i] = 99 if d[i - 1] % 2 == 0 else d[i]
答案 1 :(得分:4)
我建议迭代降序:
d = [9, 8, 2, 15, 6, 33, 10, 4]
for x in xrange(len(d)-1, 0, -1):
if d[x - 1] % 2 == 0:
d[x] = 99
print d
在这种情况下,下一次迭代将不会更改值。
或者您可以创建新的list
或者您可以为以前的值添加变量,并在if
语句
d = [9, 8, 2, 15, 6, 33, 10, 4]
previous = d[0]
for i, x in enumerate(d[1:]):
if previous % 2 == 0 :
previous = d[i]
d[i] = 99
else:
previous = d[i]
print d
答案 2 :(得分:0)
向后搜索列表
答案 3 :(得分:0)
试试这个:
d = [9, 8, 2, 15, 6, 33, 10, 4]
prev=d[0]
for i,j in enumerate(d):
if prev%2==0:
prev=j
d[i]=99
else:
prev=j
print d