字节
- 在 Python3 以后,字符串 和 bytes 类型彻底分开了。字符串 是以 字符 为单位进行处理的,bytes 类型是以 字节 为单位处理的。
- bytes 数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列。
- Python3 中,bytes 通常用于网络数据传输、二进制图片和文件的保存等等。
创建字节
创建字节的两种方法:
- 语句:
b""
# 方法一: 语句 b"" bt = b"abc" print(bt) # 输出打印 b'abc' print(type(bt)) # 数据类型 <class 'bytes'>
- 语句:
bytes(string, encoding[, errors])
# 方法二: 语句 bytes(string, encoding[, errors]) # "utf8" 万国码, "gbk" 中国码 bt1 = bytes('abc', encoding='utf8') # 传入字符串时b,必须设置encoding 参数,否则会报错。 print(bt1) # 输出打印 b'abc' print(type(bt1)) # 数据类型 <class 'bytes'>
字节类型常用转换
- 字节转字符串- - ->解码
语句:bytes.decode()
# bytes --> str 解码 bt = b'abc' # 初始化字节bt print(bt.decode()) # 打印输出 "abc" print(type(bt.decode())) # 输出类型 <class 'str'>
- 字符串转字节- - ->编码
语句:S.encode()
# str--> bytes 编码 st = 'abc' print(st.encode()) # 输出打印 b'abc' print(type(st.encode())) # 输出数据类型 <class 'bytes'>
- 提取字节中元素,返回ASCII码值
bt_1 = b"abc" # 初始化字节bt_1 print(bt_1[0]) # 返回字符"a"的ASCII码:97
列表
- 列表是 Python 中最基本也是最常用的数据结构之一,它是一个 有序可重复的元素
集合。从数据结构角度看,Python 的列表是一个 可变长度 的顺序存储结构,每一
个位置存放的都是对象的指针
列表创建
创建列表的两种方法:
- 语句:
li = []
创建一个列表,只要把 逗号 分隔的 不同的数据元素 使用 方括号 括起来即可。li = ["a", 1, 1.1, 1+2j, True] # 初始化列表 li print(li) # ['a', 1, 1.1, (1+2j), True] 列表元素可以是任意类型
- 语句:
list = ()
li_1 = list("abccc") # 初始化列表 li_1 print(li_1) # ['a', 'b', 'c', 'c', 'c']列表值可重复 list(1234) # 报错 整数不是序列类型,只能整体储存
- 注意:
- 变量名不要使用 list,易混淆
- 列表里的 元素 可以是 任意类型,且可重复
- iterable 表示 可迭代的对象,简单来说就是可以一个一个元素取出来的。比如:str
访问(查)列表内的元素
-
列表 从0开始 为它的每一个元素顺序创建 下标索引,直到 总长度减一 。要访问它的某个元素,以方括号加下标值的方式即可。
-
注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是 len(list)-1。
li = list("12345") li[0] # 1 li[1] # 2 li[-1] # 5
修改列表内的元素
-
直接 取出元素 进行 重新赋值
li = list("12345") li[0] = 9 # 直接赋值 print(li) # 返回值: [9, '2', '3', '4', '5']
删除列表内的元素
- 直接 取出元素,再通过 del语句 或者 list.remove() 或者 list.pop() 进行删除
- 语句:
del
li = list("12345") del li[0] # 删除li中索引为0的值 即'1' print(li) # ['2', '3', '4', '5'] del li # 删除整个列表li print(li) # 报错列表li 已被删除
- 语句:
list.remove()
li = list("12345") li.remove('1') # 从列表中移除值'1'(不是索引位置) print(li) # ['2', '3', '4', '5']
- 语句:
list.pop()
li = list("12345") print(li.pop()) # '5' 弹出列表最后一个元素,可以返回弹出值 print(li.pop(0)) # '1' 弹出索引0 的值 print(li.pop(40)) # 超范围 报错
列表的特殊操作
-
列表相加,不是对应位置相加。而是拼接
li = [1, 2, 3] li_1 = [4, 5, 6] li_2 = li + li_1 # + -->拼接 print(li_2) # [1, 2, 3, 4, 5, 6]
-
与整数相乘,扩展。(相当于对同一个列表进行多次拼接)
li = [1, 2, 3] li_1 = li*2 # 进行扩展 相当于li + li print(li_1) # [1, 2, 3, 1, 2, 3]
-
成员判断
li = list("12345") print('1' in li) # True print('0' not in li) # True
-
迭代(相当于取出每一个元素)
li = list("12345") for i in li: # 使用for循环,依次取出li中的元素并赋值给i print(i) # 输出i对应的值
常用内置函数
- 语句:
min()
–>返回最小值 - 语句:
max()
–>返回最大值 - 语句:
len()
–>返回列表长度(元素总数)li = list("12345") # 字符判断大小通过ASCII码 print(min(li)) # 返回最小值'1' print(max(li)) # 返回最大值'5' print((len(li))) # 输出列表li长度(列表元素总数)-->5
注意:
- 字符串与字符之间比较转为 ASCII码
- 字符串与整数比较报错
排序与反转
- 语句:
list.reverse()
逆序输出列表 - 语句:
list.sort()
列表升序,list.sort(reverse = Ture)
列表降序
切片
- 切片模式:list[start:stop:step];
- start默认为0;
- stop默认为最后索引位置;
- step默认为1
列表的常用函数
-
语句:
L.append(object)
–> 在列表末尾添加新的对象 -
注意:
- 对象可以是列表,字符串,数字或者元组等任意数据类型
- 返回值为None,或者说没有返回值
-
语句:
L.count(object)
–> 统计某个元素在列表中出现的次数- 元素不在列表范围内,返回值0
li = list('abca') print(li.count('a')) # 2 'a'共计出现两次 print(li.count('e')) # 返回值0 列表不存在该元素
-
语句:
L.extend(iterable)
–> 用新列表扩展原来的列表
注意:- 对象必须是可迭代的数据类型如字符串、列表、元组等
- 返回值为None,或者说没有返回值
-
语句:
L.index(value)
–> 从列表中找出某个值第一个匹配项的索引位置- 和字符串使用方法一致;
- 如果查找值不存在,报错
li = list('abcdabcd') print(li.index('c')) # 返回值 2 print(li.index('c', 3)) # 返回值 6 print(li.index('e')) # 报错
-
语句:
L.insert(index, object)
–> 将对象插入列表 -
语句:
L.copy()
–> 复制列表
注意:L.copy()
有返回值 返回列表
-
语句:
L.clear()
–> 清空列表
注意:
1. L.clear()
仅仅清空列表内元素,使其变成空列表 []
2. del
则是直接将列表删除