列表或字典的引用:

引用针对变量的时候,传递引用后,对引用后的对象的值进行改变是不会影响到原值的;而列表不一样如:

spam =42

cheese = spam

spam =100

print(spam)      #out:100

print(cheese)   #out:42

如果对列表进行引用会是什么情况呢,我们来看看

spam = [0,1,2,3,4,5]
cheese = spam
print(spam)
cheese[1] = 'hello'
print(spam)
print(cheese)

out:

[0, 1, 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]

结果我们发现cheese 是引用的spam的,我们改变cheese之后 spam的值也跟着改变了;这个就跟我们当初学的C语言一样;列表的引用其实就是相当于把前面一个列表的地址同时给了一个新的列表用。结果这两个列表都指向了同一地址而这个地址里面本身就只能存放一组数据,不管是对这两个列表谁进行操作都会把这个地址中的数据重新更新;也因此列表可以用来形参的传递来改变实参的值,而变量不同,变量的形参传递是不会改变实参的值的;

def eggs(somePrameter):
  somePrameter.append('Hello')

def trees(somename):
   somename+='Hello'
   print('形参值:'+somename)

spam = [0,1,2,3]
treename = '梧桐'
eggs(spam)
trees(treename)
print(spam)
print('实参值:'+treename)

out:

形参值:梧桐Hello
[0, 1, 2, 3, 'Hello']
实参值:梧桐

列表或字典的复制

在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表和字典,你可能不希望这些变动影响到原来的列表或字典。要做到这一点,Python提供了copy的模块,其中包含copy()和deepcopy()函数。第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不是复制引用.注意这需要用到copy模块,因此要import copy

如上示例做些许更改所示:

import copy
spam = [0,1,2,3,4,5]
cheese = copy.copy(spam)
print(spam)
cheese[1] = 'hello'
print(spam)
print(cheese)

out:

[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]

python 列表和字典的引用与复制(copy)的更多相关文章

  1. Python列表,元组,字典,序列,引用

    1.列表 # Filename: using_list.py # This is my shopping list shoplist=["apple", "mango&q ...

  2. Python 列表切片陷阱:引用、复制与深复制

    Python 列表的切片和赋值操作很基础,之前也遇到过一些坑,以为自己很懂了.但今天刷 Codewars 时发现了一个更大的坑,故在此记录. Python 列表赋值:复制"值"还是 ...

  3. Python 列表生成式 & 字典生成式

    Python 列表生成式 & 字典生成式 通过生成式可以更加简洁地生成列表和字典 列表生成式 对比 直接生成数据后加入列表示例: user_list = list() for i in ran ...

  4. python 列表,字典,元组,字符串,常用函数

    飞机票 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object ...

  5. python 列表构造时的引用问题

    以前老是不注意python对象引用,平时也没遇到这样的问题,昨天在这个小问题纠结了半天时间.真是TMD啊 先说明一下我的目的,我有一个包含16个元素的列表,每个元素也是一个小列表.我想每四个子列表为一 ...

  6. python列表和字典的迭代

    1.列表和字典的迭代 程序开发中,对列表和字典进行迭代是非常常见的事情. 字典一般可以选择对key进行迭代.对value迭代和对key/value一起迭代 >>> d = {'a': ...

  7. Python 列表/元组/字典总结

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...

  8. Python列表和字典的方法总结

    列表方法: 方法 说明 append( item ) 在列表末尾插入(item ) count( element ) 返回element在列表中出现的次数 extend( newlist ) 将new ...

  9. 【277】◀▶ Python 列表/元组/字典说明

    目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...

随机推荐

  1. android studio 部分问题及解决方案

    1 启动多个虚拟机后开启指定端口的虚拟机     https://blog.csdn.net/chuyouyinghe/article/details/72958004       adb devic ...

  2. abs,all,any函数的使用

    ''' abs函数:如果参数为实数,则返回绝对值 如果参数为复数,则返回复数的模 ''' a = 6 b = -6 c = 0 # print("a = {0} , b = {1} , c ...

  3. PHP array_merge_recursive() 函数

    实例 把两个数组合并为一个数组: <?php$a1=array("a"=>"red","b"=>"green&q ...

  4. PHP array_uintersect_uassoc() 函数

    实例 比较两个数组的键名和键值(使用用户自定义函数进行比较),并返回交集: <?phpfunction myfunction_key($a,$b){if ($a===$b){return 0;} ...

  5. 卷积神经网络 part1

    [任务一]视频学习心得及问题总结 根据下面三个视频的学习内容,写一个总结,最后列出没有学明白的问题. [任务二]代码练习 在谷歌 Colab 上完成代码练习,关键步骤截图,并附一些自己的想法和解读. ...

  6. 使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(二)

    在上一篇文章<使用ProxySQL实现MySQL Group Replication的故障转移.读写分离(一) > 中,已经完成了MGR+ProxySQL集群的搭建,也测试了ProxySQ ...

  7. ACL2020 Contextual Embeddings When Are They Worth It 精读

    上下文嵌入(Bert词向量): 什么时候值得用? ACL 2018 预训练词向量 (上下文嵌入Bert,上下文无关嵌入Glove, 随机)详细分析文章 1 背景 图1 Bert 优点 效果显著 缺点 ...

  8. .NetCore 配合 Gitlab CI&CD 实践 - 开篇

    引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...

  9. Unity 笔记

    摄像机 Main Camera 跟随主角移动,不看 UI 剧情摄像机 当进入剧情时,可以关闭 main camera,启用剧情摄像机,不看 UI UI 摄像机 看 UI Unity编辑器常用的sett ...

  10. 在龙芯mips64el平台编译bmon

    bmon 是一个 实时命令行流量监控软件,但作者在github并没有提供mips64el的版本.下面记录一下编译过程.可以在这里下载bmon.v4.0.linux-mips64el.tar.gz. 环 ...