1、最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII
编码,ASCII码占一个字节(byte)8位。但是要处理中文显然一个字节是不够的,至少需要两个字节,还不能和ASCII编码冲突,所以,中国制定了GB2312
编码,用来把中文编进去,各国都有开发自己的编码。后来为了统一,出现了Unicode,Unicode编码常使用俩个字节表示一个字符,现代操作系统和大多数编程语言都直接支持Unicode。
2、如果文本信息全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算,所以UTF-8诞生了。UTF-8兼容ASCII编码 ,在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。1个中文字符经过UTF-8编码后通常会占用3个字节。
3、python3中字符串是以Unicode编码的,ord()函数将字符转换为十进制数,chr()将编码转换为字符。python的字符串类型str在内存中以Unicode编码,如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes,以b' '表示。当
str
和bytes
互相转换时,需要指定编码,最常用的编码是UTF-8(除特殊需求外)。
Python3 中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。其中,元组、数字、字符串是不可变的
1、数字(Number):python3包含int、float、bool、complex(复数)。数据类型是不允许改变的,如果改变值,将重新分配内存空间。Python可以同时为多个变量赋值,如a, b = 1, 2;Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型;数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
常用函数:abs()返回数字绝对值; ceil()返回数字的上入整数; floor()返回数字的下入整数; exp(x)返回e的x次方; pow(x, y)x**y的值; sqrt(x)返回x的平方根; round(x, y)x小数点后y位四舍五入
2、字符串(str):Python中的字符串可以切片、有两种索引方式,从左往右以0开始,从右往左以-1开始,str[ : ](遵循左闭右开),加号 + 是字符串的连接符, 星号 * 表示复制当前字符串。字符串也是不可变的,一切改变字符串的函数实质上都是生成了一个新对象,原字符串还是不变的。
常用函数:str.count(); str.startswith()\str.endswith(); str.find()\str.index(); str.expandtabs()将文本中tab转换为空格; str.join(); str.lstrip()\rstrip()\strip(); str.replace(); str.split()
3、列表(list):可以进行的操作包括索引,切片,加,乘,检查成员;
常用函数:list.count(); list.append(); list.extend()在末尾添加其他列表中的多个元素; list.insert(); list.pop()默认删除最后元素,也可指定索引; list.remove()按值删除元素; list.sort()排序;
4、元组(tuple):不可修改,只能查询,操作与列表类似。当元组中有列表等可修改的数据类型存在时,是可以修改列表等中的内容,这是因为元组元素所指的对象是列表,所以列表本身是不可变的,但其中的内容是可变的。就像往微波炉里放东西加热,微波炉指定只能用专用的碗不可更换,但至于碗里是什么东西就无所谓了。
5、字典(dict):字典的查询速度比列表快,但占用的内存大,典型的以空间换时间。字典的key是不可变的,这是因为字典查询是根据key的哈希值获取对应value的地址,所以对一个key多次赋值后面的值会覆盖前的。
常用函数:dict.copy()返回一个字典的浅拷贝(深浅拷贝后面再写); dict.get()通过key获取值 dict.fromkeys( ,)创建一个新字典; dict.items()返回一个存着键值元组的列表; dict.keys()以列表形式返回key值; dict.values()以列表形式返回value值; dict.setdefault()key值查询,若不存在则自动创建; dict.popitem()删除最后一个元素;
6、集合(set):set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key,也就不能放入可变的对象。
常用函数:set.add(); set.remove();
1、列表生成式:[表达式 for item in 可迭代对象 if 条件],例:
>>> [x * x for x in range(1,10)]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
当加入判断条件后:
>>> [x * x for x in range(1,10) if x!=5]
[1, 4, 9, 16, 36, 49, 64, 81]
也可以再加一层循环:
>>> [x * y for x in range(1,6) for y in range(6,11)]
[6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 18, 21, 24, 27, 30, 24, 28, 32, 36, 40, 30, 35, 40, 45, 50]
当判断条件放到for前面时必须用if else:
>>> [x * x if x!=5 else x==0 for x in range(1,10)]
[1, 4, 9, 16, False, 36, 49, 64, 81]