python - Python - 将列表附加到列表
问题描述
我正在尝试解决有关列表的问题。对于输出,我想将所有列表添加到一个最终列表 ( ans
)。
但是当我附加第二个列表时,第一个列表等于第二个。我不明白为什么会这样。
ls = list()
ans = []
n = int(input())
for _ in range(n):
cmd = input()
if cmd == "insert":
i, e = map(int, input().split())
ls.insert(i, e)
elif cmd == "print":
ans.append(ls)
elif cmd == "remove":
e = int(input())
ls.remove(e)
elif cmd =="append":
e = int(input())
ls.append(e)
elif cmd == "sort":
ls.sort()
elif cmd == "pop":
ls.pop()
elif cmd == "reverse":
ls.reverse()
else:
print("invalid input")
print(ans)
输入:
12
insert
0 5
insert
1 10
insert
0 6
print
remove
6
append
9
append
1
sort
print
pop
reverse
print
解决方案
当您将列表附加到列表中时,即ans.append(ls)
您实际上是通过引用传递它。因此,当您在其中追加ls
3 次时ans
,它将追加相同的ls
.
如果您不想通过引用附加,则应提供该列表的副本。在更复杂的列表中,您可能应该进行深度复制。
这是附加副本:
ans.append(ls.copy())
希望能帮助到你!
推荐阅读
- mysql - 如何对两个数据之间的空值进行升序
- html - 将浮动设置为子 div 后忽略父 div 位置
- mysql - MySQL - 子查询排序 MySQL
- sql-server-2016 - 值中的特殊字符不适用于 like 运算符,而同样适用于 SQL Server 中的 = 运算符
- netflix-zuul - 生产中的 Zuul 网关
- rust - 实现一个 rayon::iter::ParallelIterator
- postgresql - 自动生成的 Java ee 应用程序未连接到 PostgreSQL
- javascript - 访问循环javascript之外的变量
- c# - GetAzureADAppOnlyAuthenticatedContext 不释放证书的文件句柄
- c# - 使用 WooCommerceNET 库从 woocomerce 获取数据