我是靠谱客的博主 清爽巨人,最近开发中收集的这篇文章主要介绍删除列表中某些数据,如何用循环做到删准确,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

场景:给出一个列表li = [1,2,3,4,6,5,8,12], 如何剔除掉列表中的偶数?

第一种方法:找出要保留的元素,放到临时列表中,再将临时列表赋值给原来的列表。

优点:简单,不易错

缺点:多一个临时列表,代码量增多,占用内存空间

li = [1,2,3,4,6,5,8,12]
temp = []  # 临时列表

for i in li:
    if i % 2 != 0:
        temp.append(i)

li = temp
print(li)

结果为[1, 3, 5]

第二种方法:直接在列表中进行删除操作

for i in li[:]:
    # 注意要用li[:],若用li,则删除不准确
    if i % 2 == 0:
        li.remove(i)

print(li)

注意:要用li[:],若用li或者range(len(li)),然后进行判断+删除,会删不准确。

原因如下:列表的元素是有序的,每个元素都有下标

1.用li[:],下标和元素搭配是固定不变的

2.单纯用li或者for i in range(len(li)),虽然也是每个元素搭配一个下标,但当删除符合的偶数时,列表长度会发生变化,下标也跟着变化,是一个动态的过程。

我们可以看下

li = [2,1,9,10,4,5,6,8]

for i,j in enumerate(li[:]):
    print(f'({i},{j})')
    if j % 2 == 0:
        print('---删除开始---')
        print(i, j)
        li.remove(j)
        print('---删除结束---')

print(li)

结果为:

(0,2)
---删除开始---
0 2
---删除结束---
(1,1)
(2,9)
(3,10)
---删除开始---
3 10
---删除结束---
(4,4)
---删除开始---
4 4
---删除结束---
(5,5)
(6,6)
---删除开始---
6 6
---删除结束---
(7,8)
---删除开始---
7 8
---删除结束---
[1, 9, 5]
 

li = [2,1,9,10,4,5,6,8]

for i,j in enumerate(li):
    print(f'({i},{j})')
    if j % 2 == 0:
        print('---删除开始---')
        print(i, j)
        li.remove(j)
        print('---删除结束---')

print(li)

 

最后

以上就是清爽巨人为你收集整理的删除列表中某些数据,如何用循环做到删准确的全部内容,希望文章能够帮你解决删除列表中某些数据,如何用循环做到删准确所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部