Python学习(四) —— 编码
一、枚举
enumerate,for i in enumerate(可迭代对象),返回元组,内容是(序列号,可迭代的每一个元素)
for i,j in enumerate(可迭代对象,开始序列号),返回序列号,可迭代的每一个元素
a = 'abc'
b = {'a':1,'b':2}
for i in enumerate(a):
print(i)
#输出:
#(0, 'a')
#(1, 'b')
#(2, 'c') for i,j in enumerate(a,1):
print(i,j)
#输出:
#1 a
#2 b
#3 c
二、内存地址:id()
==比较的是值,is 比较的是内存地址
小数据池:int:-5~256
str:1.不能有空格
2.长度不能超过20
3.不能有特殊字符
a = []
b = []
print(a == b,a is b) #True False a = 'abc'
b = 'abc'
print(a == b,a is b) #True True a = '-6'
b = '-6'
print(a == b,a is b) #True False
三、编码
在python3中,str的表现形式为字符串,bytes的表现形式为b字符串,str的实际编码方式是unicode,bytes的编码方式是utf-8、gbk、gb2312...
在python3中,unicode:1个字符(无论中文、英文、数字),都用4个字节表示
utf-8:用最少的字节表示一个字符,英文占1个字节,欧洲文字占2个字节,亚洲文字占3个字节
gbk:英文占1个字节,中文占2个字节
在python3中,字符串存在内存中是unicode编码方式,不能直接传输或者存储在硬盘,要转成bytes类型,unicode转bytes:a.endode('编码方式'),bytes转unicode:a.decode('编码方式')
utf-8和gbk、gb2312等编码方式互不识别,如果要转化,要先解码(decode)成unicode方式,再编码(encode)成对应的方式。
a = 'abc'
b = a.encode('utf-8')
print(b,type(b)) #b'abc' <class 'bytes'> a = '你好'
b = a.encode('utf-8')
print(b,type(b)) #b'\xe4\xbd\xa0\xe5\xa5\xbd' <class 'bytes'>
c = b.decode()
print(c,type(c)) #你好 <class 'str'>
d = c.encode('gbk')
print(d,type(d)) #b'\xc4\xe3\xba\xc3' <class 'bytes'>
四、集合(set)
集合用{}表示,集合是无序、不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希。
特点:去重,把一个列表变成集合,就自动去重了;
关系测试,测试两组数据之前的交集、差集、并集等关系;
1、增:add(),update()(迭代着增加)
set1 = {1,2,3}
set1.add('abc')
print(set1) #{1,2,3,'abc'} set1 = {1,2,3}
set1.update('abc')
print(set1) #{1,2,3,'a'.'b'.'c'}
2、删:remove('元素')、pop():随机删除一个元素,并返回这个元素、clear():清空集合
set1 = {1,2,3,'a','b','c'}
set1.remove(1) #删除一个元素
print(set1) #{2,3,'a','b','c'} set1.pop() #随机删除一个元素
print(set1) #{3,'a','b','c'} set1.clear() #清空集合
print(set1) #set()
3、集合的其它操作
3.1、交集(& 或者 intersection)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2) # {4, 5}
print(set1.intersection(set2)) # {4, 5}
3.2、并集(| 或者 union)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8}
print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7,8}
3.3、差集(- 或者 difference)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) # {1, 2, 3}
print(set1.difference(set2)) # {1, 2, 3}
print(set2 - set1) #{8, 6, 7}
print(set2.difference(set1)) #{8, 6, 7}
3.4、反交集(^ 或者 symmetric_difference)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}
3.5、子集: < 或者 issubset 超集: > 或者 issuperset
set1 = {1,2,3}
set2 = {1,2,3,4,5,6} print(set1 < set2) # True
print(set1.issubset(set2)) # True print(set2 > set1) # True
print(set2.issuperset(set1)) # True
5、frozenset:不可变集合,让集合变成不可变类型
s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
五、深浅copy
1、赋值运算
l1 = [1,2,3,['a','b']]
l2 = l1 l1[0] = 111
print(l1) # [11, 2, 3, ['a','b']]
print(l2) # [11, 2, 3, ['a','b']] l1[3].append('c')
print(l1) # [11, 2, 3, ['a','b','c']]
print(l2) # [11, 2, 3, ['a','b','c']]
对于赋值,指向的是同一个列表,所以更改l1的时候,l2也随之改变
2、浅拷贝:copy()
l1 = [1,2,3,['a','b']]
l2 = l1.copy() l1[0] = 111
print(l1) # [111, 2, 3, ['a','b']]
print(l2) # [1, 2, 3, ['a','b']],1没有改变 l1[3].append('c')
print(l1) # [111, 2, 3, ['a','b','c']]
print(l2) # [1, 2, 3, ['a','b','c']],列表里面的列表变了
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
3、深拷贝:copy.deepcopy(),pycharm需要import copy
import copy
l1 = [1,2,3,['a','b']]
l2 = copy.deepcopy(l1) l1[0] = 111
print(l1) # [111, 2, 3, ['a','b']]
print(l2) # [1, 2, 3, ['a','b']],1没有改变 l1[3].append('c')
print(l1) # [111, 2, 3, ['a','b','c']]
print(l2) # [1, 2, 3, ['a','b']],列表里面的列表也没有发生改变
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变
Python学习(四) —— 编码的更多相关文章
- Python学习-字符编码, 数据类型
本篇主要内容: 字符编码 Python中的数据类型有哪些 类型的一些常用操作及方法 一.字符编码 编码解释的大部分内容摘自廖雪峰老师教程中的讲解,点击跳转. 简单介绍: 我们知道计算机只能处理数字,如 ...
- python 学习笔记-----编码问题
1.python 最早支持的是ASCII编码. 所以对于普通的字符串"ABC"为ASCII编码的形式.字母和数字之间的转换函数为ord('字母')和chr(‘数字’)函数. ord ...
- Python学习-字符编码浅析
1.什么是字符编码 既然是简述那肯定是简单明了.字符编码,看名字就是一种字符的编码格式,由于计算机内部采用二进制,想要将人类的语言字符输入到计算机就需要一种编码格式,这就是字符编码.字符------- ...
- Python学习---深入编码学习1225
1.1. Python2 Py2中只有2中数据类型,Str和Unicode,而且str中保存的是bytes,Unicode中保存的是unicode 一切我们能看到的明文都是unicode数据类型, b ...
- python学习四(处理数据)
head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-34,3:21,2.34,2.45 ...
- Python学习(2)——编码
今天写了个程序但是在DOS窗口和IDEL窗口调试的结果不一样,有些郁闷~ #!/usr/bin/env python #coding=utf-8 #python version:2.7.3 #syst ...
- Python学习(四) Python数据类型:序列(重要)
插播一下,先了解一下Python的数据类型,Python现有的数据类型有好多,最重要的有列表.元组.字典 列表:我觉得可以对应java中的数组 list=['physics', 'chemistry' ...
- Python学习(四):模块入门
1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...
- Python学习四|变量、对象、引用的介绍
变量 变量创建:一个变量也就是变量名,就像a,当代码第一次赋值时就创建了它.之后的赋值将会改变已创建的变量名的值,从技术上讲,Python在代码运行之前先检测变量名,可以当成是最初的赋值创建了变量. ...
- Python学习之——编码方式
1.各种编码方式 ASCII:http://zh.wikipedia.org/zh-hans/ASCII Unicode:http://zh.wikipedia.org/zh-hans/Unicode ...
随机推荐
- nginx负载均衡优化配置
针对nginx做负载均衡时其中一台服务器挂掉宕机时响应速度慢的问题解决 nginx会根据预先设置的权重转发请求,若给某一台服务器转发请求时,达到默认超时时间未响应,则再向另一台服务器转发请求. 默认超 ...
- Tomcat 部署项目的三种方法(转)
转自:https://www.cnblogs.com/ysocean/p/6893446.html#_label0 1.下载 Tomcat 服务器 ①.官网下载地址:http://tomcat.apa ...
- Webapi 跨域 解决解决错误No 'Access-Control-Allow-Origin' header is present on the requested resource 问题
首先是web端(http://localhost:53784) 请求 api(http://localhost:81/api/)时出现错误信息: 查看控制台会发现错误:XMLHttpRequest c ...
- Python-视图 触发器 事务 存储过程
1.视图2.触发器*** 在某个时间发生了某个事件时 会自动触发一段sql语句3.事务*****4.存储过程***** 5.函数6.备份与恢复*** mysqldump -u -p (库名 [表名] ...
- linux指定只显示(只打印)文件中的某几行(中间几行)
[一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...
- 死磕安卓前序:MVP架构探究之旅—基础篇
前言 了解相关更多技术,可参考<我就死磕安卓了,怎么了?>,接下来谈一谈我们来学习一下MVP的基本认识. 大家对MVC的架构模式再熟悉不过.今天我们就学习一下MVP架构模式. MVC和MV ...
- Confluence 6 配置 简易信息聚合(RSS)
一个 Confluence 的管理员可以配置下面的 RSS 特性: Confluence 针对 RSS 聚合返回的最大项目数量. Confluence 针对 RSS 聚合允许的最大时间周期. 上面两个 ...
- Confluence 6 禁用管理员联系表单
如果你希望禁用这个功能,不允许用户通过发送电子邮件的方式联系站点管理员.你可以禁用这个页面中有关输入用户信息发送电子邮件的部分.你只能禁用用户电子邮件输入表单,如果你按照上面描述的步骤在 'Custo ...
- ionic在ios侧滑页面空白 禁用视图滑动后退
本人在ios10左右滑动的时候,经常出现左滑页面后退,然后整个页面空白现象,只能强行退出,并重新登录,最简单的方法就是禁用侧滑后退这个功能: 在app.js上config增加如下: $ionicCon ...
- sql查询条件为空的另类写法o( ̄▽ ̄)d
简单描述:今天看老大提交的代码,发现了一个有意思的事情,一条sql中判断条件是空,老大的写法,让我眼前一亮.直接上代码 代码: <select id="getxxxs" re ...