深浅拷贝

在python中浅拷贝

a=[1,2,3,4,]
b=a.copy()
b[0]='3333'
print(a) #[1, 2, 3, 4] 浅拷贝一层并不会对a造成变化
print(b) #[3333, 2, 3, 4]
c=[[1,2],3,33]
d=c.copy()
# print(d) #[[1, 2], 3, 33]
d[0][1]=55
print(d) #[[1, 55], 3, 33]
print(c) #[[1, 55], 3, 33] 浅拷贝中含有列表了 a列表中的列表会随着b的更改而更改
这是因为 浅拷贝这能拷贝一层 第二层的列表不会被拷贝 如图已经更改了指向所以a也会跟着改变

深拷贝的方式就是;   先引入模块import copy

现在的深拷贝可以拷贝多层    所以b的变化不会影响到a

接下来说说集合

集合可以筛选掉重复的内容  集合里面的元素是一个可哈希的数据,即是可以作为字典的键,所以集合中的元素不能有列表或者元组这些不可哈希元素,但是集合本身是一个非可哈希数据,所以集合不能作为字典的键     还可以用in 和not in判断某元素在不在集合里面

不可变集合通过 a=frozenset(a)创建

a=[1,2,3,4]

通过set 命令可以将a转成集合

b=set(a)

接下来说说集合的增删

增 改

a=[1,2,3,4,5]
b=[5,6,7,8,9,]
a1=set(a)
a1.add('88') #添加到一个元素到集合中去
b1=set(b)
b1.update(['oppp',44]) #添加列表的两个元素到集合中去
b1.update('wwees') #不重复的添加该字符串的每一个到集合中去
print(a1) #{1, 2, 3, 4, 5, '88'}
print(b1) #{{5, 6, 7, 8, 9, 'oppp', 44, 's', 'e', 'w'}
a=[1,2,3,4,5]
b=[5,6,7,8,9,] a=set(a)
a.add('1111')
print(a) #{1, 2, 3, 4, 5, '1111'}
b=set(b)
b.update(['111','2222'])
print(b) #{5, 6, 7, 8, 9, '2222', '111'}
b.remove('111') #删除指定的值
print(b.pop()) #随机删除值并返回该值
print(b)
a.clear() 清空集合
print(a)
del a #从内存上删除a 集合 如果要查看集合 可以用for循环去遍历 然后是集合的关系测试: a=[1,2,3,4,5]
b=[5,6,7,8,9,]
a=set(a) b=set(b)
print(a.intersection(b))  #{5}
print(a&b) #{5} 这两个都是取交集
print(a.union(b)) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a|b) #{1, 2, 3, 4, 5, 6, 7, 8, 9} 这两个都是取并集
print(a.difference(b)) #{1, 2, 3, 4}
print(a-b) #{1, 2, 3, 4} 这两个都是取差集
print(a.symmetric_difference(b)) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(a^b) #{1, 2, 3, 4, 5, 6, 7, 8, 9} 这两个取的是对称差集,也可以说是反向交集
a.issuperset(b) #判断a>b / a 是b的父集 或超集
a.issubset(b) #判断a<b /a 是b的子集 接下来是函数
函数==subroutine 子程序 / procedures 过程
函数的作用:1 减少重复代码
2 方便修改 更易扩展
3 保持代码的一致性
用‘def’开头来定义一个函数
函数名字的命名和变量名字的命名规则一样
def test(): #‘test()’就可以被调用函数内容根据自己的需求去写就可以了
函数的参数: 必须参数 关键字参数 默认参数 不定长参数
必须参数 是位置必须一致 如:
def test(name,age):
print(‘Name’,name)
print(‘Age’,age)
test('linux',22) #linux 22 ‘linux’ 和name 22和age 都是位置上一一对应好的 位置不能改
关键字参数 位置可以随意改变:
def test(name,age):
print('Name',name)
print('Age',age)
test(age=22,name='lin') #Name lin Age 22 #age=22 和 name=‘lin’位置可以随意改变
默认参数 即默认是不变的 其他情况单独更改
def test(name,age,sex='man'):
print('Name',name)
print('Age',age)
print('Sex',sex)
test(age=22,name='lin') #Name lin Age 22 Sex man test()括号中可以绘制填两个内容另一个已经默认了 需要改的话直接写入第三个内容就可以了
不定长参数分为两种 分别是 无命名参数和有命名参数
创建方式为 def test(*arge) #无命名参数输入的内容会加入到一个元组里去
无命名参数
def test(**kwarges) #指定命名参数 输入的内容会加入到一个字典中去 
def test(*args):
for i in args:
print(i,end=' * ')
test(1,2,3,45,) #1 * 2 * 3 * 45 *
指定命名参数
def test2(**kwargs):
for j in kwargs:
print(j,kwargs[j],end= '--#--')
test2(name='lin',age=22,sex='man') #name lin--#--age 22--#--sex man--#--
在填写参数时是有优先级的:必须参数>关键字参数>默认参数>无命名参数>指定命名参数
def test3(a,name,sex=man,*args,**kwargs):
  pass
test3(1,'lin',1,2,3,age=33,hobby=book)
在函数中还有个return 其作用是结束函数 返回某个对象
注意 1 函数中如果没有去特殊定义return 默认是返回一个None
2 如果return多个对象那么python会将这多个对象封装成一个元组返回
一个对象
def test4():
a=3333
return a
b=test4()
print(b) #3333
多个对象
def test4():
return 1,2,3,3444
b=test4()
print(b) #(1, 2, 3, 3444)
没有对象
def test4():
return
b=test4()
print(b) #None
接下来的函数中变量的查找顺序 LEGB:
白话就是 :作用域局部>外层作用域>当前模块中的全局>python内置作用域
图片就是这样

需要注意的是:1 只有模块 类 函数 才能映入新的作用域

            2 对于一个变量内部作用域先声明就会覆盖外部作用域,不声明直接使用就会使用外部作用域的变量
3 内部作用域要修改外部作用域的值时 全局变量要使用global 关键字 嵌套作用域变量要是用nonlocal关键字, nonlocal是python3新增的关键字
通过这串代码可以清楚知道每层的作用域是什么
b=int(2.33) #int  built-in
a=1 #global
def outer():
o_count=22 #enclosing
def iner():
i_count=333 #local 到这就结束了 希望给为指教!
 

深浅拷贝 集合(定义,方法) 函数(定义,参数,return,作用域) 初识的更多相关文章

  1. Scala类型声明与定义、函数定义、流程控制、异常处理

    Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. Scala的基础类型基本与javascript一致. Scala的数据类型全部相同于Java中,具有 ...

  2. Python全栈开发之3、深浅拷贝、变量和函数、递归、函数式编程、内置函数

    一.深浅拷贝 1.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # 定义变量 数字.字符串 # n1 = 123 n1 ...

  3. JS-对象的深浅拷贝及其新增方法测试

    我们在了解数据类型的时候,都知道一般的字符,数值,undefined和布尔值等都为一般数据类型,它们在进行数据传输的时候,进行的是值传递,当我们修改新数据,是不影响老数据的.但是我们今天要讲的是数据类 ...

  4. python 小数据池 深浅拷贝 集合

    1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...

  5. python 深浅拷贝&集合

    一.深浅拷贝 1.浅拷贝,只会拷贝第一层 s = [1, 'ss', '小可爱'] s1 = s.copy() print(s1) >>> [1, 'ss', '小可爱'] s = ...

  6. js 或jquery定义方法时,参数不固定是怎么实现的

    //①不定义接受参数的方式来接受参数(arguments) function getparams(){ //利用arguments来接受参数,arguments表示参数集合, //里面存放的调用这个方 ...

  7. python之函数、参数、作用域、递归

    函数的定义 函数也就是带名字的代码块.使用关键字def来定义,指出函数名及参数,以冒号结尾. def fibs(num): result =[0,1] for i in range(num-2): r ...

  8. 【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal

    1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, ...

  9. 07_python_集合深浅拷贝

    一.join li = ["李嘉诚", "麻花藤", "林海峰", "刘嘉玲"] s = "_".j ...

随机推荐

  1. web服务器调用Servlet的过程

    Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则直接执行第④步,否则,执行第② ...

  2. jitamin基于lnmp环境搭建

    从github上面下载源代码 cd /Data/apps/nginx/html git clone https://github.com/jitamin/jitamin.git 修改配置文件 cd   ...

  3. xshell连接不上ubuntu---could not connect to 'ip' (port 22): Connection failed.

    可能是没有开启ssh server,接下来就是开启服务就好.命令如下: sudo apt-get install openssh-server 这样就OK啦

  4. 【题解】P4585 [FJOI2015]火星商店问题(线段树套Trie树)

    [题解]P4585 [FJOI2015]火星商店问题(线段树套Trie树) 语文没学好不要写省选题面!!!! 题目大意: 有\(n\)个集合,每个集合有个任意时刻都可用的初始元素.现在有\(m\)个操 ...

  5. $Poj3179\ Corral\ the\ Cows$ 二分+离散化+二维前缀和

    Poj $Description$ 在一个二维平面上,有$N$颗草,每颗草的大小是$1*1$,左下角坐标为$x_i,y_i$.要求一个正方形,正方形的边平行于$x$或$y$轴,正方形里面包含至少$C$ ...

  6. [vsCode实践] 实践记录

    [vsCode实践] 实践记录 版权2019.5.1更新 Q1:代码中涉及到操作本地文件时,相对路径总是不对 操作本地文件时,路径方式有两种 相对路径 例如:代码文件所在路径/Users/tp0829 ...

  7. 机器学习之路--seaborn

    seaborn是基于plt的封装好的库.有很强的作图功能. 1.布局风格设置(图形的style)and 细节设置 用matplotlib作图: import numpy as np import ma ...

  8. 在Mac/linux上查找(并终止)进程锁定特定端口的几种方法

    前言  无论是做网站还是做产品,经常使用到杀死某个进程的方法.制作脚本并熟悉运用是一个非常节省时间的方法. 基本命令  查找: [sudo] lsof -i :3000  杀戮 kill -9 方法一 ...

  9. 03_常用的JS正则表达式54种形式类型

    1.由数字.26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非 ...

  10. ThreadLocal解析:父线程的本地变量不能传递到子线程详解

    众所周知,ThreadLocal类是java提供线程本地变量的工具类.但父线程的本地变量却不能被子线程使用,代码如下: public static void main(String[] args) { ...