python中for循环删除列表元素

value= [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]
要求:python语言编写:从列表第一个元素开始遍历,如果后一个元素的值-这个值小于5就删除后一个元素,例如120,122,就删除122, 127,131,135,138就删除131,135。

在删除元素后,不应该继续将循环加1,因为删除元素会导致后面的元素向前移动一位。


lst = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]

i = 0
while i < len(lst):
    if i > 0 and lst[i] - lst[i-1] < 5:
        lst.pop(i)
        
    else:
        i += 1

##复制一个临时变量就可以正常循环删除了

lt=[93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]
lt1=lt.copy()
for i in range(len(lt1)-1):
    if lt1[i+1]-lt1[i]<5:
        lt.remove(lt1[i+1])

img

value= [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]
for i in range(2,40):
    
    if(value[i+1]-value[i]<5):
        value.remove(value[i+1])
for i in value:
    print(i,end=' ')

value = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]

i = 0
while i < len(value) - 1:
if value[i+1] - value[i] < 5:
value.pop(i+1)
else:
i += 1
print(value)

望采纳。可以使用以下代码来实现从列表的第一个元素开始遍历,并删除与前一个元素的差值小于 5 的元素:

value = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]

for i in range(len(value)-1):
    if value[i+1] - value[i] < 5:
        value.pop(i+1)
print(value)

这段代码使用了一个for循环遍历列表的每一个元素,并判断与前一个元素的差值是否小于5。如果小于5,就使用pop函数删除后一个元素。最后,使用 print 函数打印删除后的列表。


value = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]

i = 0
while i < len(value) - 1:
    if value[i+1] - value[i] < 5:
        del value[i+1]
    else:
        i += 1

print(value)

代码如下:

value = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]

i = 0
while i < len(value) - 1:
    if value[i + 1] - value[i] < 5:
        del value[i + 1]
    else:
        i += 1

print(value)

这个程序会从列表的第一个元素开始遍历,如果后一个元素的值 - 这个值小于 5 就删除后一个元素,最后输出剩余的元素。


lst = [93, 100, 107, 113, 120, 122, 127, 131, 135, 138, 143, 153, 156, 163, 168, 172, 176, 179, 181, 184, 187, 190, 196, 202, 205, 208, 213, 215, 220, 228, 234, 245, 248, 252, 254, 259, 262, 266, 269, 271, 274, 280, 282, 284, 286, 289, 291, 298, 300, 303, 306, 311, 320, 325, 328, 336, 339, 342, 348, 354, 360, 366, 371]
i = 0
while i < len(lst):
    if i > 0 and lst[i] - lst[i-1] < 5:
        del lst[i]
    else:
        i += 1