Python 在不更改原始值的情况下更改列表项

Python 在不更改原始值的情况下更改列表项,python,list,Python,List,我正在做一些练习题,其中一个程序要求我将列表中的数字改为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 d=[9

我正在做一些练习题,其中一个程序要求我将列表中的数字改为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
d=[9,8,2,15,6,33,10,4]
i=1
而i
返回
[9,8,99,15,6,99,10,4]

我希望它返回
[9,8,99,99,6,99,10,99]


如果有意义的话,我如何将99添加到原始列表中而不更改其原始值?无法使用pop或insert等列表方法。

向后搜索列表

  • 参见最后一个值和最后一个值之前的值(n-1,n-2)
  • 如果需要,请更改最后一个值
  • 移动到以前的值(n-2、n-3)
  • 重复此操作,直到更新整个列表

  • 我建议迭代降序:

    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
    
    在这种情况下,下一次迭代将操作未更改的值

    或者您可以创建新的
    列表

    或者,您可以为上一个值添加变量,并在
    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
    
    试试这个

    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]
    
    试试这个:

    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
    

    对你的措辞要非常小心(我知道英语可能不是你的第一语言)。你说的是“如果之前的数字是偶数”。我想你的意思是“如果之前的数字是偶数”。这有很大的区别。输出不应该是
    [9,8,99,15,6,99,10,99]
    ?我该如何在python中执行“was”部分。我是否将临时值指定给前一个值或其他值?否,因为2是偶数,所以应该将15更改为99个可能的重复值