Python 在不更改原始值的情况下更改列表项
我正在做一些练习题,其中一个程序要求我将列表中的数字改为99,前提是之前的数字是偶数。我遇到了一个麻烦,当我把数字改成99,当它移动到下一个数字时,它会检查99是否是偶数,我不想要,我想要它检查我在那里的原始值,而不是我把它改成的值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
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等列表方法。向后搜索列表
我建议迭代降序:
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个可能的重复值