找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2123|回复: 5

[求助] 利用for循环删除列表元素问题

2

主题

4

帖子

4

积分

贫民

积分
4
Jersey-992 发表于 2019-4-16 11:07:21 | 显示全部楼层 |阅读模式
Python新手求助大神们
我想利用一个for循环删除列表中所有的元素,可是删除不干净,请大神们指点我的思路错在了哪里:
users = ['admin', 'Mike', 'Jeremy', 'Jersey', 'Barbie']
print(users)

        for user in users:
                users.remove(user)
       
print(users)

以上是代码,实测只删除了列表第1、3、5项
回复

使用道具 举报

8

主题

20

帖子

20

积分

贫民

积分
20
wanan7 发表于 2019-4-16 14:32:42 | 显示全部楼层
本帖最后由 wanan7 于 2019-4-16 14:35 编辑

你这种写法类似于按下标遍历删除,遍历第一次,users删除了'admin',遍历第二次,是users中的第二个,但是你已经删除了一个,那么原来的第二个元素‘Mike’就变成了第一个,所以不会删除它,以此类推可以尝试这样:
  1. users = ['admin', 'Mike', 'Jeremy', 'Jersey', 'Barbie']
  2. users_copy = users.copy()
  3. for user in users_copy:
  4.     users.remove(user)
复制代码


回复 支持 反对

使用道具 举报

2

主题

4

帖子

4

积分

贫民

积分
4
Jersey-992  楼主| 发表于 2019-4-16 14:59:05 | 显示全部楼层
wanan7 发表于 2019-4-16 14:32
你这种写法类似于按下标遍历删除,遍历第一次,users删除了'admin',遍历第二次,是users中的第二个,但是 ...

谢谢大神 明白了!我后来也利用复制列表的形式去删除了 就不会出现这种问题了:
users_1 = ['admin', 'Mike', 'Jeremy', 'Jersey', 'Barbie']
users_2 = users_1[:]

for user2 in users_2:
        if user2 in users_1:
                users_1.remove(user2)
但是看来多了一步没必要的if,还是向您的代码学习!
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-4-17 08:36:06 | 显示全部楼层
del use[:]
回复

使用道具 举报

8

主题

20

帖子

20

积分

贫民

积分
20
wanan7 发表于 2019-4-17 09:11:02 | 显示全部楼层
Jersey-992 发表于 2019-4-16 14:59
谢谢大神 明白了!我后来也利用复制列表的形式去删除了 就不会出现这种问题了:
users_1 = ['admin', 'Mi ...

互相学习,共同进步
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
leavor 发表于 2019-4-17 17:37:08 | 显示全部楼层
既然删除所有元素,直接
users  = []
不就完了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表