数据类型与变量
字符串在内存中的表示(数字变量同)

字符串和编码
1.获取字符整数
ord('A')
2.将编码转换成字符
chr(65)
3.ASCII、Unicode、UTF-8的关系
ASCII:只包含大小写英文字母、数字和一些符号,用1个字节。
Unicode:包含所有字符,且不可变长,因此需要的存储空间最大,最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
UTF-8:可变长,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
4.字节bytes
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'
要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
5.encode()
使str编码为bytes
如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。
以Unicode表示的str通过encode()方法可以编码为指定的bytes
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
6.decode()
将bytes编码为str
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str。
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
7.len()
计算字符数或字节数
8.源码文件需要注明编码方式
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
9.格式化
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
格式化整数和浮点数还可以指定是否补0和整数与小数的位数,用%%来表示一个%
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
>>> print('%2d-%02d' % (3, 1))
3-01
>>> print('%.2f' % 3.1415926)
3.14
>>>print("成绩提升%.1f%%" % 1.7333)
成绩提升1.7%
使用list和tuple#
1.list添加、删除元素
list.append('a') # 添加到最后一位
list.insert(1,'a') # 添加到索引号为1的位置
list.pop() # 删除最后一位
list.pop(1) # 删除索引号为1的位置的元素
2.空列表长度为0
3.tuple一旦初始化就不能修改
4.定义一个只有1个元素的tuple
tupleTest =(1,)
5.各种数据类型的存储变化

循环
break
结束循环
continue
结束当前次循环,直接进入下一轮循环
dict和set
1.dict判断key是否存在的方法in
,get()
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> 'Thomas' in d
False
# get() 如果key不存在,可以返回None,或者自己指定的value
>>> d.get('Thomas') # 返回None的时候Python的交互环境不显示结果
>>> d.get('Thomas', -1)
-1
2.dict和list的比较
dict:
1.查找和插入的速度极快,不会随着key的增加而变慢;
2.需要占用大量的内存,内存浪费多。
list:
1.查找和插入的时间随着元素的增加而增加;
2.占用空间小,浪费内存很少。
dict是用空间来换取时间的一种方法。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。
网友评论