lis中的反向索引

2024-04-26 10:55:31 发布

您现在位置:Python中文网/ 问答频道 /正文

对于列表k1=[31.0,72,105.0,581.5,0,0,0,0],我想向反向列表中的第一个非零元素添加一个常量,例如100。 这就是我想要的:newk1=[0,0,0,681.5,105,72,31] 作为一个Python的初学者,我无法理解它。你能帮帮我吗。这是我的密码:

k1=[31.0, 72, 105.0, 581.5, 0, 0, 0]
Inverselist=[]


for i in range(len(etack1)):
    Inverselist.append(etack1[-(i+1)])
    print("Inverselist", Inverselist)
newk1=Inverselist
run_once = 0
while run_once < 1:      
    for j in  range(len(newk1)): 
        if newk1[j-1]>0: 
            newk1[j-1]=newk1[j-1]+100 
            run_once = 1 
            break
print("Newk1", newk1 )

Tags: runin元素列表forlenrangek1
3条回答

我觉得你想得太多了:

首先,颠倒列表:

inverselist = k1[::-1]

然后,替换第一个非零元素:

for i, item in enumerate(inverselist):
    if item:
        inverselist[i] += 100
        break

只是一种愚蠢的方式。修改列表而不是创建新列表。

k1.reverse()
k1[list(map(bool, k1)).index(1)] += 100

如果你想逆转,你可以通过切片来实现。如下所示

>>> a = [1,2,3]
>>> reverse_a = a[::-1]
>>> reverse_a
[3, 2, 1]

一旦你浏览了列表,你只需要检查第一个元素是非零元素

k1=[31.0, 72, 105.0, 581.5, 0, 0, 0]
newk1= k1[::-1]
for i in range(len(newk1)):
    if newk1[i] != 0:
        newk1[i] += 100
        break
print("Newk1", newk1 ) #prints Newk1 [0, 0, 0, 681.5, 205.0, 172, 131.0]

相关问题 更多 >