鱼C论坛

 找回密码
 立即注册
查看: 1682|回复: 11

[已解决]清除列表不成功啊,为啥呢?

[复制链接]
发表于 2018-2-17 16:11:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. users = ['eric', 'tom', 'admin', 'jean', 'mya']

  2. for user in users:
  3.     users.remove(user)
  4. print(users)
复制代码


想通过这种方式清空列表,但是最后输出的列表里还有tom和jean两个元素。
还有,怎么判断一个列表是空的?
最佳答案
2018-2-17 18:13:03

很好。users[:]等于是生成了users列表的一个新的一样内容的切片,所以后边users.remove(user)并不会影响这个切片。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-17 16:31:30 | 显示全部楼层
小白一枚:阔以 users 然后回车 。要是显示【】为空
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 16:35:48 | 显示全部楼层
  1. users = ['eric', 'tom', 'admin', 'jean', 'mya']

  2. for user in users[:]:
  3.     users.remove(user)
  4. print(users)
复制代码

这样子就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-2-17 16:47:34 From FishC Mobile | 显示全部楼层
和我之前挖的坑一样。http://bbs.fishc.com/forum.php?mod=viewthread&tid=104988&mobile=2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 16:50:47 | 显示全部楼层
因為循環的過程中也改變了原來的列表
-
檢查是否為空可以使用
  1. bool(users)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-2-17 17:29:21 | 显示全部楼层
本帖最后由 铁棍阿童木 于 2018-2-17 17:33 编辑
  1. users = ["eric", "tom", "admin", "jean", "mya"]
  2. while True:
  3.     if users:
  4.         users.pop()
  5.     else:
  6.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 17:37:47 | 显示全部楼层
users.remove(user) 改变了原来的 users列表。

for user in users: 最主要在这一句,这一句可以看出user是在原来的users下标基础上以下标取值。(取user的值)
也就是说第1次取的是users[0], 第2第取的是users[1]  如果说你users变了的话,它还是在原来的下标基础上来取user
users = ['eric', 'tom', 'admin', 'jean', 'mya']

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

eric
admin
mya
>>>

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2018-2-17 18:13:03 | 显示全部楼层    本楼为最佳答案   

很好。users[:]等于是生成了users列表的一个新的一样内容的切片,所以后边users.remove(user)并不会影响这个切片。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 19:46:50 | 显示全部楼层
列表是可变类型 你可以复制一个列表用复制的列表去遍历  本身的列表去remove
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-19 19:42:48 | 显示全部楼层
z_rimii 发表于 2018-2-17 16:50
因為循環的過程中也改變了原來的列表
-
檢查是否為空可以使用

bool()会返回一个值吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-19 19:47:37 | 显示全部楼层
小木船 发表于 2018-2-17 18:13
很好。users[:]等于是生成了users列表的一个新的一样内容的切片,所以后边users.remove(user)并不会影响 ...

是不是说,列表切片其实就是复制出了列表的一部分变成了新的列表?只不过users[:]这个新列表恰好包含了users这个原列表的所有元素?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-19 19:56:31 | 显示全部楼层
ilsoviet1917 发表于 2018-2-19 19:47
是不是说,列表切片其实就是复制出了列表的一部分变成了新的列表?只不过users[:]这个新列表恰好包含了us ...

切片就是截取原列表的部分或全部 并生成新的列表,users[:]省略了开始和结束的下标,就意味着这个切片截取了全部的原列表元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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