基本数据类型是其它语言都必有的数据类型,但 list
数据类型在其它语言中并不一定是内置的数据类型,比如 c++ 语言,c++ 里面的 list 可以是第三方的 stl 库提供的,
也可以是程序员自己创造的一种数据类型,但是 Python 解释器内置 list 数据类型。
list 是 Python 内置的一种数据类型,list 是一种有序的集合,有序集合并不是集合里面的数据是有序的,
有序集合的意思是可以通过下标访问的集合,有序集合的概念我们在上一小节提到,在此重述一遍。
list 定义
因为 python 是动态语言,定义一个 list
变量不需要显式的定义 list,list定义是用 [] 或者 list([]),我们以后习惯于直接用
[],因为书写简单易懂,[] 里面的数据是 list 的成员。
ugly_list = ["ruhua", "xingxing", "konglong"] print(ugly_list)
当然,如果 [] 里面可以不放入数据,也是一个 list,是一个空的 list。注意,空 list 是假值。
beauty_list = [] print(beauty_list) if not beauty_list: print("beauty_list 是假值")
可以通过下标来访问 list 中的成员,索引是从 0 开始的,list 是变量,我们可以通过下标修改 list 成员的值。
ugly_list = ["ruhua", "xingxing", "konglong"] print(ugly_list[0]) # 通过下标访问成员 ugly_list[1] = "zhaoritian" # 通过下标修改成员 print(ugly_list)
操作 list 常用的函数
上节我们知道 len 函数是 Python 内置的函数,并且可以用于获取字符串长度,同样 len 函数可以获得 list
的长度。
ugly_list = ["ruhua", "xingxing", "konglong"] print(len(ugly_list))
可以通过 list 的 index 函数获取成员所在的下标,
如果指定 start 和 stop 范围,则在指定范围(左闭右开)内查找,
如果该成员不存在,则 Python 解释器抛出异常。
ugly_list = ["ruhua", "xingxing", "konglong"] print(ugly_list.index("xingxing")) # 返回下标 1 print(ugly_list.index("zhaoritian")) # 抛出异常 print(ugly_list.index("konglong", 0, 2)) # 抛出异常,因为范围在[0,2)
我们知道通过下标可以访问和修改成员的值但无法添加值,
我们可以通过 list 的 insert 函数,插入元素到 list 中的某个位置。
ugly_list = ["ruhua", "xingxing", "konglong"] ugly_list.insert(1, "zhaoritian") print(ugly_list) 运行结果:['ruhua', 'zhaoritian', 'xingxing', 'konglong']
可以用 list 的 pop 函数,删除所指定的索引的成员,如果索引不存在(越界),则 Python 解释器抛出异常,
remove 函数可以删除指定的成员,如果该成员不存,则 Python 解释器抛出异常。
# pop 函数 ugly_list = ["ruhua", "xingxing", "konglong"] ugly_list.pop(1) # ok print(ugly_list) 运行结果:['ruhua', 'konglong'] ugly_list.pop(10) # 抛出异常,因为索引越界 print(ugly_list) 运行结果:IndexError: pop index out of range # remove 函数 ugly_list = ["ruhua", "xingxing", "konglong"] ugly_list.remove("xingxing") # ok print(ugly_list) 运行结果:['ruhua', 'konglong'] ugly_list.remove("zhaoritian") # 抛出异常,因为成员不存在 print(ugly_list) 运行结果:ValueError: list.remove(x): x not in list
list 成员的本质
list 中的成员可以是任何类型,成员的数据类型也可以不同,
空 list 用 [] 表示,我们前面讲过 [] 是假值,但是 [] 不是 False 也不是
None,更不是 0 或 “”,因为数据类型不同。
mylist = ["Hello", 250, [1, 2, 3]] print(mylist) otherlist = [] print(otherlist == False) # False print(not otherlist) # True
list 中的成员用逗号隔开,每个成员无论数据类型多么复杂,也只是一个成员。
mylist = ["Hello", 250, [1, 2, 3]] len_mylist = len(mylist) print(len_mylist) # 结果为 3 print(mylist[0]) # "Hello" print(mylist[2]) # [1, 2, 3] mylist[2][1] = 5 # 正确,[1, 2, 3] 是变量,里面的成员可以修改 mylist[0][1] = "F" # 错误,"Hello" 是常量,里面的成员不可修改
本节重要知识点
熟练运用操作 list 的函数。
弄明白 list 数据成员的本质。