Python

Python数据类型_列表类型

2020-07-25  本文已影响0人  xilifeng

列表类型转换

res = list("hello")  # 能被for循环的类型均可作list类型转换,字符串,列表,字典

列表类型的常用操作

按索引存取值(正向存取+反向存取):可取可改

l = [11, 22, 33]
print(l[-1])
l[0] = 44
print(l)

切片 是复制原列表的索引, 不改原列表中的值

l = [11, 22, 33, 44, 55]
res = l[0:4:2]  # l[头:尾:步长]顾头不顾尾, 不是改原值, 是产生新值
res1 = l[:]  # 复制原列表l的索引, 产生一份新的索引, 所以新列表res1的id会改变
res1[4] = [66, 77]  # 改变4号位的值, 列表res1的索引位置没变, 所以id不变
src_l = [11, 22, [33, 44]]  # 列表中[0]和[1]是不可变类型, 浅拷贝和深拷贝一样
dst_l = src_l[:]  # 复制原列表的索引, 浅拷贝, 等同 dst_l = src_l.copy()
dst_l[2][0] = 666  # 更改了和原列表共享的值, 新老列表[2][0]位置的值一起改变, 因为是浅拷贝
src_l = [11, 22, [33, 44]]  # 深拷贝示例
from copy import deepcopy  # 列表中含可变类型, 要不影响原列表中可变类型的数据, 须深拷贝

dst_l = deepcopy(src_l)  # 深拷贝, 每一层遇到可变类型会造一个新列表
dst_l[2][0] = 666  # 因为深拷贝, 新老列表[2][0]位置的值一起改变

长度

src_l = [11, 22, [33, 44]]
print(len(src_l))  # 3

成员运算in 和 not in

l = [11, 22, [33, 44]]
print([44, 33] in l)  # False
print(33 in l)  # False

成员运算in 和 not in示例: 去重

infos = [
    {"name": "felix", "age": 20},
    {"name": "jack", "age": 21},
    {"name": "felix", "age": 20}
]
l = []
for info in infos:
    if info not in l:
        l.append(info)
print(l)

内置方法: append 追加到末尾,改变原列表, 不是产生新列表, 没有返回值, 所以不能赋值给新变量

l = [11, 22, 33]
l.append(44)
print(l)

内置方法: insert 插入到指定索引位置

l = [11, 22, 33]
l.insert(0, "aa")
print(l)

内置方法: extend 批量追加

l = [1, 2, 3]
names = ["jack", "felix", "tom"]
l.extend(names)
print(l)

内置方法: count, index, clear

names = ["jack", "felix", "tom"]
res = names.count("felix")  # 统计出现次数
res = names.index("felix", 0, 2)  # 找不到就报错, 列表没有find
names.clear()  # 清空列表, 没有返回值, 不能赋值
names.reverse()  # 直接把原列表翻转, 和切片names[::-1]不同, 切片是复制一份到新值, 没有返回值
l = [-5, 1.1, 0, 10]
l.sort()  # 列表中只能是数字,才能用sort从小到大排列
l.sort(reverse=True)  # 从大到小排

内置方法: 删除

names = ["jack", "felix", "tom"]

方式1: 万能删除, 是语句, 没有返回值, 不能赋值, 单纯删

del names[0]

方式2: remove指定元素删除, 没有返回值, 不能赋值, 单纯删

names.remove("tom")

方式3: pop指定索引删除, 由返回值, 剪切走

res = names.pop(0)
print(res)
上一篇下一篇

猜你喜欢

热点阅读