复习
1.深浅拷贝
    ls = [1, 'a', [10]]
    值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变
    浅拷贝:通过copy()方法 ls2 = ls.copy(),ls中存放的值的地址没有改变, 但内部的值发生改变,ls2会随之改变
            -- ls = [1, 'a', [10]]  =>  [1, 'a', [100]] = ls2
    深拷贝:通过deepcopy()方法 ls3 = deepcopy(ls),ls中存放的值发生任何改变,ls3都不会随之改变
2.元组类型
    t = tuple()
    元组:1.就可以理解为不可变的list 2.有序 - 可以索引取值,可以切片 3.不可变 - 长度和内容都不能发生改变
    细节:元组中可以存放所有的数据类型,所以存放可变类型数据后,可变类型依然可以发生改变
3.字典类型
    d1 = {}
    d2 = dict({'a': 1})
    d3 = dict(name='Bob')  # 所有的key都会用合法的变量名,最终转化为字符串类型的key
    d4 = {}.fromkeys('abc', 0) => {'a': 0, 'b': 0, 'c': 0}
    key: 要确保唯一性,所以必须为不可变类型
    value:存放可以存放的所有类型数据,所以支持所有类型
    字典:1.可变 2.没有索引,通过key取值 3.无序的
    增删改查:字典名[key名] | 字典名[key名] = 值 | update(dict) | setdefault(key, d_value) | get(key, default)
            | pop(key) | popitem() | clear()
    循环:keys() | values() | items()
    for k, v in dic.items():  # (k, v)
        pass
    字典的成员运算:完成的就是 key 在不在 目标字典中
4.集合类型
    s = set()
    集合:1.可变 - 可增可删  2.无序无索引无key - 不能取值不能改值 3.for可以对集合取值,取值的结果顺序不确定
    特定:不能存放重复的数据
 
今日内容
 
一.数字类型的相互转换
1.哪些类型可以转化为数字
res = int('10')
print(res)
res = int('-3')
print(res)
res = float('.15')
print(res)
res = float('-.15')
print(res)
res = float('-3.15')
print(res)
                                          # 作业:判断所有能被转换为数字类型的字符串,并转化
2.数字转化字符串
print(str(10))
3.字符串与列表相互转换 ******
s = 'abc123呵呵'
print(list(s))  # ['a', 'b', 'c', '1', '2', '3', '呵', '呵']  没有对应的 str(ls)
ls = ['a', 'b', 'c', '1', '2', '3', '呵', '呵']
n_s = ''.join(ls)
print(n_s)  # 'abc123呵呵'
   s1 = 'a b c 1 2 3 呵 呵'
   res = s1.split()  # 默认按空格拆
s1 = 'a b c 1 2 3 呵 呵'
res = s1.split()
print(res)
 
# .必须掌握
s2 = 'ie=UTF-8&wd=你好帅'
res = s2.split('&')
print(res)  # ['ie=UTF-8', 'wd=你好帅']
ls2 = ['ie=UTF-8', 'wd=你好帅']
n_s2 = '@'.join(ls2)
print(n_s2)  # ie=UTF-8@wd=你好帅
 
 
 4.需求:"ie=UTF-8&wd=你好帅" => [('ie', 'UTF-8'), ('wd', '你好帅')]
res = []
s4 = "ie=UTF-8&wd=你好帅"
ls4 = s4.split('&')  # ['ie=UTF-8', 'wd=你好帅']
for ele in ls4:  # v = ie=UTF-8 | wd=你好帅
    k, v = ele.split('=')  # k: ie  v: UTF-8
    res.append((k, v))
print(res)
 5.需求:"ie=UTF-8&wd=你好帅" => {'ie': 'UTF-8', 'wd': '你好帅'}
res = {}
s5 = "ie=UTF-8&wd=你好帅"
ls5 = s5.split('&')  # ['ie=UTF-8', 'wd=你好帅']
for ele in ls5:  # v = ie=UTF-8 | wd=你好帅
    k, v = ele.split('=')  # k: ie  v: UTF-8
    res[k] = v
print(res)
6.需求:[('ie', 'UTF-8'), ('wd', '你好帅')] => {'ie': 'UTF-8', 'wd': '你好帅'}
res = {}
ls6 = [('ie', 'UTF-8'), ('wd', '你好帅')]
for k, v in ls6:
    res[k] = v
print(res)
7.list与tuple、set直接相互转化 - 直接 类型()
# 8.需求:将汉字转化为数字
        将 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟
         转化为 1、2、3、4、5、6、7、8、9、10、100、100
 # 作业:壹仟捌佰玖拾叁 => 1893
num_map = {
    '壹': 1,
    '贰': 2,
    '仟': 1000
}
ls8 = ['贰', '壹', '仟']
res = []
for v in ls8:
    num = num_map[v]  # 通过key去映射表拿到对应的值,完成 '贰' => 2
    res.append(num)
print(res)
```
 
二,字符编码
              # 数据 从 硬盘 => 内存 => cpu
 
(一)应用程序打开文本文件的三步骤
  1.打开应用程序
  2.将数据加载到内存中
  3.cpu将内存中的数据直接翻译成字符显示给用户
(二)python解释器
   1.打开python解释器
   2.将数据加载到内存中
   3.cpu将内存中的数据解释执行将结果显示给用户,如何解释执行不能通过,将错误信息提供给用户
(三)编码的发展史
           # 电脑只能识别高低电频对应的0,1信息 => 问题:如何将世间万物信息存放到内存中
           # 世间万物信息 => 0,1形式的数据 => 电脑中存放,将该过程逆向操作,就是访问已存储的数据信息
1. 编码表       # 人能识别的字符 <=> 机器能识别的字符:一定存在一种固定的对应关系
                      # 编码表:一定范围内人能识别的字符与机器能识别的字符形成的对应关系表(映射表)
   1.1,ASCII表:英文字母、英文符号、数字与机器能识别的字符的对应关系表,8个二进制位就能存放完这所有的对应关系 => 1字节
          python2采用的默认编码是ASCII,早期并不支持中文编程
  1.2,GBK:中文与与机器能识别的字符的对应关系表(完全兼容ASCII表),16个二进制位能存放所有汉字与ASCII之前的对应关系 => 2个字节
    2个字节能否存放常用汉字 => 16个二进制位 2^15
            print(pow(2, 15))
  1.3,Shift_JIS | Euc-kr:日文 | 韩文 与机器能识别的字符的对应关系表(完全兼容ASCII表)
   2.乱码:存的编码格式与取的编码格式不一致
   3.Unicode万国码:世间中常用国家的常用字符与机器能识别的字符的对应关系表
      3.1 转码:Unicode存在汉字与二进制对应关系,GBK也存在汉字与二进制对应关系,将GBK存放的数据转存到Unicode数据
                     均采用Unicode编码表,只是存放数据采用字节数不一致,utf-8与utf-16是Unicode编码表的两种体现方式
      3.2.utf-8:以1个字节存放英文,以3 | 6个字节存放汉字,在英文数据过多时,更深空间,用来传输效率更高
      3.3utf-16:所有支持的符号都采用2个字节存放,读存数据采用定长,不用计算,读存效率高
       3.4# 硬盘到内存需要数据的传输,内存到CPU需要数据的传输,所有都采用utf-8
             # 内存需要高速读写,采用utf-16
 
 
(四)学习的结晶:
                     编码与解码要统一编码
 
# 操作文本字符
            res = "汉字呵呵".encode('utf-8') 
                                                     # 编码:将普通字符串转化为二进制字符串
            print(res)  # b'\xe6\xb1\x89\xe5\xad\x97\xe5\x91\xb5\xe5\x91\xb5'
 
           res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('GBK') 
                                                        # 解码:将二进制字符串转化为普通字符串
           print(res)  # 鍛靛懙 乱码了
           res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('utf-8')
           print(res)        
                                                  # 呵呵 读写编码统一后就不乱码了
 
 
 
 
 

python7 数据类型的相互转化 字符编码的更多相关文章

  1. 一、java基础-数据类型_数据类型转化_字符编码_转义字符

    1.Java  支持的8种基本数据类型: java的四种整数数据类型:byte 1    short 2     int4     long8   byte     8位带符号整数 -128到127之 ...

  2. day07(数据类型的相互转换 ,字符编码)

    一,复习: ''' 1,深浅拷贝 ls = [1,'a',[10]] 值拷贝:直接赋值 ls1 = ls,ls中的任何值发生改变,ls1也随之发生改变 浅拷贝:通过copy()方法 ls2 = ls. ...

  3. day07数据类型的相互转化,字符编码

    复习 ''' 1.深浅拷贝 ls = [1, 'a', [10]] 值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变 浅拷贝:通过copy()方法 ls2 = l ...

  4. day07 数据类型间的相互转化及字符编码

    今日内容: 字符间的相互转化 字符编码 今日重点: 字符间的相互转化 """ 字符间的相互转化: """ """ ...

  5. python学习Day7 数据类型的转换,字符编码演变历程

    一.数据类型的转换 1.1.1.字符转列表:lst1 = str.split(默认空格,也可依据指定字符分界),若无分界字符,就没法拆分,这时可以直接放进list转成列表 ----> s1 = ...

  6. day_7数据类型的相互转换,与字符编码

    首先复一下昨天的内容 1:深浅拷贝 1:值拷贝 直接赋值 列表1=列表2       列表1中的任何值发生改变,列表2中的值都会随之改变 2:浅拷贝,列表2=列表1  列表1中存放的值的地址没有改变, ...

  7. python-02 数据类型、字符编码、文件处理

    标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) 数字 #整型 ...

  8. day5(字符编码、数据类型、列表基本操作)

    一.字符编码 计算器所认识的编码都是二进制编码 二进制与十进制转换 计算机最开始使用的编码是美国的 ASCll编码 计算机容量单位 字符编码 python2.x 默认编码使用的是ASCll pytho ...

  9. python数据类型及字符编码

    一.python数据类型,按特征划分 1.数字类型 整型:布尔型(True,False).长整型(L),会自动帮你转换成长整型.标准整型 2.序列类型 字符串(str).元组(tuple).列表(li ...

随机推荐

  1. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  2. Webpack4教程 - 第三部分,如何使用插件

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/07/23/webpack-4-course-part ...

  3. SpringMVC归纳-2(Session会话、拦截器)

    要点: 1.HttpSession:一个session的建立是从一个用户向服务器发第一个请求开始,而以用户显式结束或session超时为结束,借助session能在一定时间内记录用户状态. 2.Mod ...

  4. 深入理解Git的实现原理

      0.导读   本文适合对git有过接触,但知其然不知其所以然的小伙伴,也适合想要学习git的初学者,通过这篇文章,能让大家对git有豁然开朗的感觉.在写作过程中,我力求通俗易懂,深入浅出,不堆砌概 ...

  5. 微信小程序开发基础

    前言: 微信小程序开入入门,如果你有html+css+javascript的基础,那么你就很快地上手掌握的.下面提供微信小程序官方地址:https://developers.weixin.qq.com ...

  6. “等一下,我碰!”——常见的2D碰撞检测

    转自:https://aotu.io/notes/2017/02/16/2d-collision-detection/ 在 2D 环境下,常见的碰撞检测方法如下: 外接图形判别法 轴对称包围盒(Axi ...

  7. netstat -an查看到大量的TIME_WAIT状态的解决办法

    netstat下time_wait状态的tcp连接: 1.这是一种处于连接完全关闭状态前的状态: 2.通常要等上4分钟(windows server)的时间才能完全关闭: 3.这种状态下的tcp连接占 ...

  8. redis -hash(哈希.对象)

    hash 用于储存对象,对象的结构为属性.值 值的类型string 增加.修改: 设置单个属性: hset 键 field 值 例如: 设置键 user 的属性name 为 python hset u ...

  9. 安装mysql8.0.12

    安装mysql8.0.12 https://blog.csdn.net/zwj1030711290/article/details/80039780 问题1:忘记记录日志打印的密码就把窗口给关了 解决 ...

  10. robotFramework第二篇之关键字的定义和使用

    lesson.robot *** Keywords *** 打开谷歌浏览器并访问百度首页 Log 打开浏览器,输入http://www.baidu.com,进入百度首页 输入用户名 [Argument ...