python - 从python3中的列表中删除元素时获得不同的输出
问题描述
我想用列表中的每个数字检查每个数字而不重复任何检查。这段代码:
a = [0,1,2,3,4]
b = a
for i in a :
for j in b:
print(i,j)
del b[0]
它给出了输出:
0 0
0 1
0 2
0 3
0 4
2 1
2 2
2 3
2 4
4 2
4 3
4 4
我想要的输出是:
0 0
0 1
0 2
0 3
0 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4
为什么我跳过 1 和 3?当我删除 'del b[0]' 行时它已修复,但据我了解,此行不应该对 'i' 的值有任何影响
解决方案
b
是根据引用分配的a
,而不是列表的副本a
,因此当您从 中删除项目0
时b
,它也会从 中删除a
。相反,您应该分配b
一个副本a
:
a = [0,1,2,3,4]
b = a[:]
for i in a:
for j in b:
print(i,j)
del b[0]
这输出:
0 0
0 1
0 2
0 3
0 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4
推荐阅读
- excel - 如何将#datetime 转换为我的本地时区?
- javascript - 使用 Google Maps JavaScript API 创建包含大量数据的多边形
- java - 将约束布局更新为相对原因错误
- javascript - 在 setState 之前设置“setState”,然后在 setState 之后返回值:Reactjs
- ruby-on-rails - 如何使用具有存储桶和文件名的 Aws::S3::Client 获取文件 URL?
- javascript - 如何在登录后重定向到页面,同时使用 express 将令牌作为处理程序发送到中间件
- regex - URL 中的正则表达式
- php - 将类添加到树枝模板中的某些字段项
- kotlin - 将 textview 更改为 println 输出
- oop - 在派生类型中声明变量与在 Fortran 子例程中声明变量有什么区别?