python - 弹出列表的所有元素
问题描述
我正在学习 Python 的基础知识,并且通过for
循环,我正在尝试使用该pop
方法来删除列表中的所有元素。无论如何,令我惊讶的是,一些元素仍然存在,我不知道为什么。
thelist = ['CompSci', 'Math', 'Chemistry', 'Art', 'Physics', 'Sports', 'Economics', 'Biology']
for items in thelist:
thelist.pop(0)
print(thelist)
我希望最终得到一个空集,但实际输出是最后 4 个元素['Physics', 'Sports', 'Economics', 'Biology']
。
解决方案
让我们在迭代时打印项目和列表
In [5]: thelist = ['CompSci', 'Math', 'Chemistry', 'Art', 'Physics', 'Sports', 'Economics', 'Biology']
...:
...:
...: for items in thelist:
...: print(items)
...: thelist.pop(0)
...: print(thelist)
...:
...:
CompSci
['Math', 'Chemistry', 'Art', 'Physics', 'Sports', 'Economics', 'Biology']
Chemistry
['Chemistry', 'Art', 'Physics', 'Sports', 'Economics', 'Biology']
Physics
['Art', 'Physics', 'Sports', 'Economics', 'Biology']
Economics
['Physics', 'Sports', 'Economics', 'Biology']
因此,每次循环运行时,您都会前进一项,并从列表中删除一项,因此您将列表迭代 4 次而不是 8 次
推荐阅读
- javascript - Firebase 更新功能无法使用
- regex - 使用 mongoexport 时排除“_id”
- django - Django 迁移中的操作错误
- asp.net-core-mvc - FastReport OpenSource 表格单元格边框间距
- reactjs - Should ReactJS server side rerender each route
- google-apps-script - 使用复选框删除空行
- time - 跟随斐波那契数列的时间复杂度是多少
- laravel - Laravel Factory 不正确的日期时间值
- mysql - 启动后无法打开 PID 文件 mysqld.pid(还没有?):符号链接的级别太多
- python-3.x - OpenPyXL - 数字 Excel 日期格式