知识小结

一、

= 表示赋值
==表示比较值的大小
is 比较内存地址

二、

数字小数据池:在-5~256之内,id在电脑里是一样的
字符串id一样要求:
①:不能有特殊字符
②:s(一个单字符)*20以内的数字,id是一样的,乘以20以后的数字则id不一样了
剩余的如dict, list ,元祖,tuple,set 没有小数据池

三、

各个编码之间的二进制不能相互转换,会产生乱码
文件的存储,传输,不能用unicode,只能用utf-8 gbk ascii utf-16

四、

bytes的类型,都是在py3的大环境中
对英文:str: 表现形式:a='alex'
中文:表现形式:a=b'alex'
编码形式:utf-8 gbk
对中文:str: 表现形式:a='中国'
编码形式:unicode
中文:表现形式:a=b'x\e23\e24\e25\e26\e27\e28' 三个字节表示一个中文
编码形式:utf-8 gbk

例子:

encode   编码  str---->bytes
s1='alex'
s11=s1.encode(utf-8)
print(sii)
输出:b'alex'

五、集合

集合是可变数据类型,元素无序,去重的。但是集合里面的元素必须是不可变的数据类型。

1:集合的创建,两种方式

set1 = set({1,2,'barry'})
set2={'','','barry'}

2:集合的增:

add,直接添加
set={'','','barry'}
set.add('')
print(set) #{1, 2, 'barry', '66'} update 迭代添加,会自动去除重复 set.update('') #{1, 2, 'barry', '6'}

3:集合的删:

set= set({1,2,'barry'})
1.pop
set.pop() 随机删除,有返回值
2.remove
set.remove(‘1’) 删除元素 # {2,'barry'}
3.clear()
set.clear() #清空集合
4.del
del set 删除集合

3:集合没有改,因为集合里的元素是不可变数据类型

4:集合的查:

set1 = set({1,2,'barry'})
for i in set1:
print(i)

5.两个集合的操作

5.1 交集。(&  或者 intersection)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
1:&
set3=set1&set2
print(set3) #{4, 5}
2:intersection
set3=set1.intersection(set2) #{4, 5}

交集

5.2 并集。(| 或者 union)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3=set1|set2
print(set3) #{1, 2, 3, 4, 5, 6, 7, 8}
set3=set1.union(set2)
print(set3) #{1, 2, 3, 4, 5, 6, 7, 8}

并集

5.3 反交集。

 (^ 或者 symmetric_difference)
1:^
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1^set2) #{1, 2, 3, 6, 7, 8}
2:symmetric_difference
print(set1.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8}

反集合

5.4 子集与超集。

1.子集
set1 = {1,2,3,4,5}
set2 = {1,2,3,4,5,6}
print(set1<set2) #true set1是set2 子集 2.超集
print(set2>set1) #true set2是set2超集

子集与超集

冻结的set:frozenset

5.5差集。(- 或者 difference)

1.-
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1-set2) #{1, 2, 3}
print(set2-set1) #{8, 6, 7}
2:difference
print(set1.difference(set2)) #{1, 2, 3}
print(set2.difference(set1)) #{8, 6, 7}

差集

六、浅copy

6.1赋值运算:对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

总结:l1=l2 不管怎么变化都是同时变,保持一致。
l1 = [1,2,3,['barry','alex']]
l2 = l1 #赋值后 l1和l2是一样的
print(l1,l2) # 值一样 [1, 2, 3, ['barry', 'alex']]
[1, 2, 3, ['barry', 'alex']]
print(id(l1),id(l2)) # id一样 28808496 28808496
#l1进行修改后再打印
l1[0] = 111
print(l1,id(l1),l2,id(l2)) #l1和l2同时变化,并且id也是同时变化的
# [111, 2, 3, ['barry', 'alex']] 28808496
[111, 2, 3, ['barry', 'alex']] 28808496
l1[3][0]='云哥' #改变嵌套的内容,l1=l2仍然同时变,保持一致。
print(l1,id(l1),l2,id(l2))
#[111, 2, 3, ['云哥', 'alex']] 28939568
[111, 2, 3, ['云哥', 'alex']] 28939568

赋值运算

6.2浅拷贝copy。

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

l1 = [1,2,3,['barry','alex']]
l2=l1.copy() #l1与l2地址不一样
print(l2,id(l2),l1,id(l1)) #l2:[1, 2, 3, ['barry', 'alex']] 7821432
#l1: [1, 2, 3, ['barry', 'alex']] 7836976 l2.append('') #总结:l2改变第一层变化,不影响l1
print(l2,id(l2),l1,id(l1)) #l2:[1, 2, 3, '4', ['barry', 'alex']] 28661880
# l1:[1, 2, 3, ['barry', 'alex']] 28677424 l2[3][0]='云哥' #总结:l2改变第二层(被嵌套的不分)变化,l1进行同步变化
print(l2,id(l2),l1,id(l1)) #l2:[1, 2, 3, ['云哥', 'alex']] 28792952
# l1:[1, 2, 3, ['云哥', 'alex']] 28808496

浅copy

6.3,深拷贝deepcopy

对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1) print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[1] = 222
print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[3][0] = 'wusir'
print(l1,id(l1[3])) # [1, 222, 3, ['wusir', 'alex']] 2915377167240
print(l2,id(l2[3])) # [1, 2, 3, ['barry', 'alex']] 2915377167304

deepcope

python--知识小结和集合的更多相关文章

  1. python基础之八:知识小结及补充

    一.python2 与python3 的区别 1.在2中print后可带扣号,也可不带,3中必须带,否则报错! #print 'hello python2' print('hello python3' ...

  2. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  3. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  4. C++ STL 知识小结

    qwq...接近联赛,就在这里对STL做一点知识小结吧,因为STL曾经失分很多. 简介 (来自Baidu) STL是Standard Template Library的简称,中文名标准模板库,惠普实验 ...

  5. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  6. Android app开发知识小结

    Android知识小结 这是一个知识的总结,所以没有详解的讲解. 一.分辨率Android中dp长度.sp字体使用.px像素.in英寸.pt英寸1/72.mm毫米 了解dp首先要知道density,d ...

  7. python学习笔记整理——集合 set

    python学习整理笔记--集合 set 集合的用途:成员测试和消除重复的条目,进行集合运算 注意:花括号或set()函数可以用于创建集合. 注意:若要创建一个空的集合你必须使用set(),不能用{} ...

  8. C/C++ 位域知识小结

    C/C++ 位域知识小结 几篇较全面的位域相关的文章: http://www.uplook.cn/blog/9/93362/ C/C++位域(Bit-fields)之我见 C中的位域与大小端问题 内存 ...

  9. JAVA 变量 数据类型 运算符 知识小结

    ---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...

随机推荐

  1. HTML学习笔记(基础部分)

    一.基本概念 1.HTML:超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言. 2.HTML文档的后缀名:.html 或 .htm 3.标签:由尖括 ...

  2. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  3. services - Internet 网络服务列表

    DESCRIPTION(描述) services 是一个普通的 ASCII 码文件, 它在 internet 服务的友好原文名以及这些服务预先分配的端口和协议类型之间提供了映射. 每个联网程序必须查找 ...

  4. The Preliminary Contest for ICPC Asia Nanjing 2019 D. Robots

    题意:给出一个DAG,一只机器人从1点出发,等概率地选择一条出边走或者停留在原点,机器人的第k次行动消耗能量是k(无论是走还是停留都算一次行动).问1到n的期望. 解法:因为行动消耗的能量跟行动次数有 ...

  5. 2019HDU多校训练第二场 Longest Subarray

    题意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次. 思路:对于这类问题,常常转化为数据结构的询问问题.我们考虑枚举右端点,对于当前右端点 ...

  6. Codeforces 1101D 点分治

    题意:有一颗树,每个点有一个点权,边权都是1,问路径上的所有点的gcd不是1的最长路径是多少? 思路:之前补这道题的时候,用分解质因数 + 树形DP做的,其实用点分治可以更暴力一点.对于这类统计树上路 ...

  7. rabbitmq 发送的用户名是什么

    消费的用户名也必须是什么 接收必须单独启动线程——否则mfc会崩溃 Sleep(30000);  //30秒 只要你打开消费队列,只消费1个 队列中所有数据都丢失???????? 断线重连: 知道答案 ...

  8. CSS 3D 的魅力

    作者 | 子慕大诗人 来源 | www.cnblogs.com/1wen/p/9064011.html   前言:   最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下.  在阅读 ...

  9. swap的几点理解

    一.什么是swap space(交换分区)? 在Linux系统中,当物理内存满了才使用Swap空间.当系统需要更多的内存资源,并且物理内存已经满了,此时,内存中那些不活跃的pages被移动(move) ...

  10. 【串线篇】SQL映射文件delete/ insert/ update标签

    一. <insert id="insertEmployee"> INSERT INTO t_employee(empname,gender,email) VALUES( ...