python - 如何在python中使列表的第一个元素不变?
问题描述
这是我的清单,
a = [['a','b','c','d'],['e','f','g','h'],['i','j','k','l'],['m','n','o','p']]
这是我的功能,
def add(change,unchange):
a = change
b = unchange
a[0].insert(a[0].index(a[0][2]),"high_range")
a[0].insert(a[0].index(a[0][3]),"low_range")
print(a)
print(b)
当我尝试执行此功能时,
add(a,a[0])
我得到这个输出,
[['a', 'b', 'high_range', 'low_range', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']]
['a', 'b', 'high_range', 'low_range', 'c', 'd']
但我的预期输出如下,
[['a', 'b', 'high_range', 'low_range', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']]
['a', 'b', 'c', 'd']
如何使列表的第一个元素在第二个变量中保持不变?对不起,我是新手。
解决方案
主要问题在于:
add(a, a[0])
当您a
在函数内部发生变异a[0]
时,它们会发生变化,并且它们指向同一事物。您需要相应地设计您的程序。你可以参考这个答案。如何克隆或复制列表?
根据您的要求,您可以执行此操作。
- 在调用函数时提供副本。
add(a, a[0][:])
# 或者
- 阅读@alec的答案。
推荐阅读
- javascript - 尝试部署到 Heroku 时出现路由器错误
- node.js - 使用 node 和 nightwatch for 循环时如何修复潜在的内存泄漏?
- etl - 调用 aws boto3 客户端 api 时粘合作业超时
- ios - 在 JWTCryptoSecurity 类上找不到方法 keyFromPemFileWithName
- bash - 将前导零添加到 bash 脚本中的十六进制数
- python - 无法让 matplotlib 事件处理程序与 Boost.Python 一起使用
- c# - 将静态参数转换为数组并与 lambda WHERE 一起使用
- java - 如何让服务保持 24 小时有效?
- django - django-admin dbshell 引发 django.core.exceptions.ImproperlyConfigured
- python - 我可以在pybel格式转换期间捕获警告消息吗?