定义一个列表的方法有三种:
- a = ['zhangsan', 18, 'male'] # 第一种, 直接用[]
- b = list(['zhangsan', 18, 'male']) # 第二种, 用 list 函数, 也可以写成 b = list([1, 2, 3])
- b = a # 第三种, 用一个列表初始化另一个列表
- c = a + b # 与第三种类似, 可以用两个列表相加来初始化另一个列表
- print(c)# ['zhangsan', 18, 'male', 'zhangsan', 18, 'male']
需要注意的是第三种方法的赋值是浅拷贝, 所以在修改数据时可能会出现问题::
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- b = a #浅拷贝
- print(a,b)# a=['zhangsan', 18, 'male', 'handsome', 100] b=['zhangsan', 18, 'male', 'handsome', 100]
- b[0]='lisi'
- print(a,b)# a=['lisi', 18, 'male', 'handsome', 100] b=['lisi', 18, 'male', 'handsome', 100]
可以看到, 当修改了 b 里面的第一个元素的值以后, a 的值也被修改了, 因为 a 与 b 共用同一块内存空间, 解决办法就是使用深拷贝, 使用深拷贝时要引入 copy 模块:
- import copy
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- b = copy.deepcopy(a) #深拷贝
- print(a,b)# a=['zhangsan', 18, 'male', 'handsome', 100] b=['zhangsan', 18, 'male', 'handsome', 100]
- b[0]='lisi'
- print(a,b)# a=['zhangsan', 18, 'male', 'handsome', 100] b=['lisi', 18, 'male', 'handsome', 100]
list 中的变量可以是不同的数据类型, 类似与 C++ 中的数组, 下标是从 1 开始, 但是这个数组更灵活一些, 可以存储各种数据类型的数据.
2. 查
list 的查找可以通过各种切片操作来实现, 切片一个有三个参数, 第一个参数是起始下标(包括该值), 第二个是终止下标(不包括该值), 第三个是步长(默认为 1):
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- # 切片方法
- print(a[0]) # 取出下标为 0 的元素, zhangsan
- # print(a[10]) # 下标越界, 会报错
- print(a[1:3]) # 左边包括, 右边不包括,[18, 'male']
- print(a[1:-1]) # -1 表示最后一个元素, 由于右边不包括故不取最后一个值, 即取到倒数第二个值,[18, 'male', 'handsome']
- # 省略值表示全取
- print(a[:]) # 从第一个开始取到最后一个,['zhangsan', 18, 'male', 'handsome', 100]
- print(a[1:]) # 取到最后一个值,[18, 'male', 'handsome', 100]
- print(a[:-1]) # 从第一个开始取到倒数第二个,['zhangsan', 18, 'male', 'handsome']
- # 步长为负表示从右往左开始取值, 第一个元素是起始下标(从左往右看时的下标)
- print(a[1:-1:1])# 从左到右数一下, 从下标为 1 开始到最后一个元素 (不包括) 结束,[18, 'male', 'handsome']
- print(a[1::2]) # 从左到右数两下,[18, 'handsome']
- print(a[3::-2]) # 从右到左数两下, 下标为 3 的元素是 handsome, 故['handsome', 18]
- print(a[2::-1]) # 从右到左数一下, 下标为 2 的元素是 male, 故['male', 18, 'zhangsan']
3. 增
像列表添加元素主要有两个方法, append 与 insert:
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- a.append('aaa') # append 中的参数放的是要插入的值, 默认插到列表的最后面, 若 append 的是字典, 会直接将整个字典插入到列表的表尾
- print(a) # ['zhangsan', 18, 'male', 'handsome', 100, 'aaa']
- a.insert(1,"bbb")# 第一个参数是插入的位置, 第二个参数是插入的值
- print(a) # ['zhangsan', 'bbb', 18, 'male', 'handsome', 100, 'aaa']
还有一个是对列表的扩展, 使用的是 extend 方法, extend 方法的参数不能是单个的值:
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- b = ['aaa','bbb']
- a.extend(b) # 将 b 的内容加在 a 的后面, extend 的参数不能是单个的值
- print(a) # ['zhangsan', 18, 'male', 'handsome', 100, 'aaa', 'bbb']
- b = {
- 'zhang':11,'li':22
- }
- a.extend(b) # 将 b 的内容加在 a 的后面, 如果参数是字典的话, 只会将键加入列表中
- print(a) # ['zhangsan', 18, 'male', 'handsome', 100, 'aaa', 'bbb', 'zhang', 'li']
4. 删
删除列表中的元素共有 4 种方法:
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- a.remove('zhangsan') # remove 中放的是要删除的内容 或者 a.remove(a[0])
- print(a) # [18, 'male', 'handsome', 100]
- b = a.pop(1) # pop 中放的是索引值, 并返回删掉的值 若不指定就默认删除最后一个
- print(a) # [18, 'handsome', 100]
- print(b) # male
- del a[0] #del 既可以删除某个固定的内容, 也可以删除整个列表
- print(a) # ['handsome', 100]
- a.clear() # clear 将整个列表置为空表
- print(a) # []
- del a
- # print(a) # 当 a 被删除以后再输出会报错
5. 修改
修改与查是类似的, 只需要将元素重新赋值即可:
- a = ['zhangsan', 18, 'male', 'handsome', 100]
- a[0]='lisi'
6. 常见函数
count: 统计某个元素出现次数
- a = [1,2,3,4,3,5,2,3].count(3)
- print(a) # 3
index: 获取某个元素第一次出现的下标
- a = [1,2,3,4,3,5,2,3]
- print(a.index(3)) # 2
- print(a.index(0)) # 元素不存在时会报错
reverse: 逆序
- a = [1,2,3,4,3,5,2,3]
- a.reverse()
- print(a) # [3, 2, 5, 3, 4, 3, 2, 1]
sort 与 sorted: 排序, 默认为升序, sort 是直接对原列表进行排序, sorted 是返回排序后得到的新列表
- a = [1,2,3,4,3,5,2,3]
- a.sort(reverse=True) #reverse 默认为 False 即升序, reverse=True: 降序
- print(a) # [5, 4, 3, 3, 3, 2, 2, 1]
- b = sorted(a) # 默认为升序
- print(b) # [1, 2, 2, 3, 3, 3, 4, 5]
- b = sorted(a, reverse=True)
- print(b) # [5, 4, 3, 3, 3, 2, 2, 1]
记录自己的 python 学习之路, 错误的地方欢迎指正~~
来源: https://yq.aliyun.com/articles/705118