博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-Day8
阅读量:6032 次
发布时间:2019-06-20

本文共 2932 字,大约阅读时间需要 9 分钟。

set 集合

list    ---> 允许重复的集合,可以修改,有序

tuple ---> 允许重复的集合,不可修改,有序

dic    ---> 允许重复的集合,可以修改,无序

set    ---> 不允许重复, 无序

 

1. 创建

  1.    s = set()       #创建空集合时使用这种方式

>>> l = [11,22,33,44,33,22,11,]>>> s = set(l)>>> s{33, 11, 44, 22}>>>

  2.    s = {11,22,33,44}  #直接创建,若s={} 会被当作字典类型

 

2. 常用方法

  s.add(33)   --->  添加元素

  s.clear()     --->  清空集合

  ret = a.difference(b)   --->   返回 a 存在 b 不存在的元素组成的集合赋给 ret

  a.difference(b)      --->  返回 a 存在 b 不存在的元素组成的集合赋给 a , 即更新自己

  s.discard(33)   --->   移除指定元素,若该元素不存在,不报错

  s.remove(33)   --->   移除指定元素,若该元素不存在,报错

  ret = a.intersection(b)      --->   取交集,赋给 ret

  a.intersection_update(b)   --->   取交集,赋给 a, 即更新 a

  ret = a.isdisjoint(b)   --->   没有交集返回True

  ret = a.issubset(b)    --->   a是b的子序列返回True

  ret = a.issuperset(b)  --->  a是b的父序列返回True

  ret = a.pop()   --->   随机移除元素到ret中

  ret = a.symmetric_difference(b)   --->   取对称差集到ret中(即a中有的且b中没有的 + b中有的a中没有的)

  a.symmetric_difference_update(b)   --->   取对称差集更新到a中(即a中有的且b中没有的 + b中有的a中没有的)

  ret = a.union(b)   --->   返回 a b 的并集到ret中

  a.update(b)   --->   将b合并到a中

 

三元运算符

  ret = value1 if condition else value2      ----->  如果condition为真,ret = value1, 否则=value2

 

内存中的表示

  str ---> 一次性创建,不可被修改,若要修改只会产生一个新的

  list ---> 类似 C语言 中的链表结构

深浅拷贝

  ******对 int str 来说,无论深拷贝 浅拷贝 赋值, 地址都是一样的******

  赋值:

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}  n2 = n1

  

 浅拷贝:只拷贝最外面一层

import copy  n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}  n3 = copy.copy(n1)

  

  深拷贝:除 int str 外都拷贝

import copyn1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}n2 = copy.deepcopy(n1)

  

 

函数

  定义函数,解释器会将函数放在内存中并不执行,之后调用函数的时候才执行该函数。

  def function_name(form_parameters1, f_p2, ...):

    function_body...

    ................

    return anything

  调用的时候可以按默认形参顺序赋以实参,也可以注明 函数名(形参2 = 实参2,形参1 = 实参1)不按顺序来 指定参数

  默认参数 放在形参列表的后面

  动态参数

  *args 默认元组类型

def fff(*a):    print(a, type(a))fff(111,222,333,444,555,[111,222],'huad')#>>>>>>>>>>>>>>>按顺序(111, 222, 333, 444, 555, [111, 222], 'huad') 

  **kwargs 默认字典类型

def fff(**a):    print(a, type(a))fff(k1 = 'v1', k2 = 'v2', k3 = 222, k4 = [11,22,33])#>>>>>>>>>>>>无序{'k3': 222, 'k4': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'} 

  都包含时 *args 一定在 **kwargs 前面,最前面可以有其他形参

def fff(c, *a, **b):    print(c, type(c))    print(a, type(a))    print(b, type(b))fff(11,22,33, k1=11,k2=22)#>>>>>>>>>>>11 
(22, 33)
{'k1': 11, 'k2': 22}

  为动态参数传入 列表 元组 字典

  实参前面 带有* 不带* 的区别

def fff(*args):    print(args, type(args))li = [11, 22, 33, 44]fff(li)fff(*li)#>>>>>>>>([11, 22, 33, 44],) 
(11, 22, 33, 44)

  

def fff(**kwargs):    print(kwargs, type(kwargs))dic = {'k1': 'v1'}# fff(dic)  #报错# fff(*dic)  #报错fff(**dic)#>>>>>>>>>>>>{'k1': 'v1'} 

  

全局变量 局部变量

  全局变量可以被局部读取,但不能修改,若要修改前面加 globle XXX

PPP = 'hello' #全局变量def fun1():    a = 123 #局部变量    global PPP   #若没有这句,表示新建了一个局部变量,输出为hello    PPP = 'world'    print(a)def fun2():    b = 456    print(PPP)    print(b)fun1()fun2()#>>>>>>>>>>>>>>123world456

  书写时,让 全局变量 都大写,局部变量 都小写

 

 

转载于:https://www.cnblogs.com/freelandun/p/6581336.html

你可能感兴趣的文章
maven打包跳过Test
查看>>
Android 开源项目集合
查看>>
mysql 命令行小结
查看>>
说一下fopen和open
查看>>
12月28日二周四次【Python基础语法】
查看>>
并发编程2:认识并发编程的利与弊
查看>>
MySQL(mysql 5.7)用户密码的管理
查看>>
学习笔记第三十一节课
查看>>
六周第三次课 9.6/9.7 awk
查看>>
【VMware vSAN 6.6】5.1.基于存储策略的管理:vSAN硬件服务器解决方案
查看>>
我为什么看好IPFS
查看>>
【Ansible】3个让Ansible性能飞起的简单优化方案!
查看>>
在mac上安装 docker
查看>>
rsyslog日志管理+LogAnalyzer
查看>>
man命令详解
查看>>
linux发行版本
查看>>
网站被黑搜索快照被劫持怎么办
查看>>
怎么修改CAD编辑器中默认的线型
查看>>
Servlet简介与Servlet和HttpServlet运行的流程
查看>>
华为--PPP典型配置举例
查看>>