将元素附加到列表并从中删除

2024-03-28 20:18:34 发布

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

lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
value=4
for j in range(0,len(lst),-1):
        if len(lst)>=value:
            lst2.append(lst[j])

我试图将“lst”中的最后4个元素附加到“lst2”,它是4,因为这就是我分配给value的元素。然而,清单上什么都没有改变?你知道吗


Tags: in元素forlenifvaluerangeappend
3条回答

^{}的语法是range(start, stop, step)。因此,在range(0, len(lst), -1)上迭代将在0上迭代,因为您不能将0降到一个正数。你知道吗

这是可行的,注意我们必须减去1来说明0索引:

for j in range(len(lst)-1, len(lst)-1-value, -1):
    lst2.append(lst[j])

print(lst2)

[302, 304, 404, 313, 213, 407, 210]

这里的range对象有点复杂。注意,负范围和负列表索引工作正常,可以使用range(-1, -value-1, -1)。你知道吗

使用Python,这里根本不需要在范围上循环。相反,可以使用列表切片和^{}迭代值本身,而不是索引:

for j in reversed(lst[-value:]):
    lst2.append(j)

当然,这里不需要手动循环,您可以通过+=扩展:

lst2 += reversed(lst[-value:])

如果您需要从lst中删除这些项,您可以通过切片来执行此操作:

lst = lst[:-value]

通过访问列表中的元素,您可以通过切片来完成

    lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
lst2.append(lst[2:])
print(lst2)

试试这个:

lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
value=4
for i in lst[-4:]:
    lst2.append(i)
    lst.remove(i)

输出:

[201, 303]
[302, 304, 404, 210, 407, 213, 313]

相关问题 更多 >