列表

List
可变序列 mutable sequences
更多信息,请访问 Python - list
创建 Creation
列表名使用单词的复数形式,如 filenames;迭代的时候,使用单数形式,如 filename
一个 square brackets []
chars = ["a", "b", "c", "d", "e", "f", "g"]
nums = [0, 1, 2, 3, 4, 5, 6]
多个 []:以逗号分隔
# ([0, 1, 2, 3, 4, 5], ['a', 'b', 'c', 'd', 'e', 'f'])
temp = chars, nums
# ([1, 2, 3, 4], [5, 6, 7, 8])
temp = [1, 2, 3, 4], [5, 6, 7, 8]
构造函数 type constructor list()
# []
chars = list()
# ['a', 'b', 'c']
letters = list("abc")      
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums = list( range(10) )
推导式 list comprehension:由一个数据获取新的数据

[x for x in iterable condition]:借助for循环遍历可迭代数据

第一个x可以是表达式,对处理每一个迭代数据

可以先筛选数据再生成新数据

# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums = [x for x in range(10)]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
nums = [2 * x for x in range(10)]
# [False, False, False, False, False, False, True, True, True, True]
nums = [x > 5 for x in range(10)]
# [6, 7, 8, 9]
nums = [x for x in range(10) if x > 5]    
操作 Operation
适用通用序列操作和可变序列操作 - Lists implement all of the common and mutable sequence operations.
增加 Added
append
insert
extend
+
nums + chars
删除 Delete
remove
pop
del
clear
修改 Modified
查找 Access
索引:从0开始,溢出时,会告警 - IndexError: list index out of range
# 0
nums[0]
# i
chars[1]      
可以是负数,-1表示尾部
不管索引是正还是负,始终是递增的
# 9
nums[-1]
# e
chars[-2]
排序 Sort
stable vs unstable
sort(*, key = None, reverse = False) 方法

会改变元素位置

稳定排序 stable

key:一个函数,用于指定排序的关键字。默认为 None,表示直接比较元素本身,适用简单数据;复合数据通常需要指定key;可以是系统函数,也可以是自定义函数

reverse:倒叙排序;默认为假 false

更多信息,请访问 Python - sort

数值按照大小排序
# [1, 2, 3, 7, 7, 9, 12, 32, 76]
nums = [1, 3, 7, 2, 9, 7, 12, 76, 32]
nums.sort()
字母按照字母表顺序排序
# ['a', 'a', 'c', 'l', 'm', 'n', 'n', 'p']
letters = list("cnplaman")
letters.sort()
汉字按照utf-8编码排序

汉字通常编码为3-4个字节;3 字节模板:1110xxxx 10xxxxxx 10xxxxxx

"陆".encode("utf-8") 编码为3个字节:b'\xe9\x99\x86'

# ['作', '军', '学', '战', '特', '种', '陆', '院']
letters = list("陆军特种作战学院")
letters.sort()
倒序排序
# [76, 32, 12, 9, 7, 7, 3, 2, 1]
nums.sort(reverse=True)
自定义排序 - 按长度排序;系统函数len
# ['张三', '王五', '李明四']
stus = ["张三", "李明四", "王五"]
stus.sort(key=len)
复合数据排序
stus = [
    {"name": "张三", "age": 20},
    {"name": "李明四", "age": 19},
    {"name": "王五", "age": 22},
]

# 根据年龄排序;自定义函数
# [{'name': '李明四', 'age': 19}, {'name': '张三', 'age': 20}, {'name': '王五', 'age': 22}]
stus.sort(key=lambda x: x["age"])

# 按照名字长度排序;自定义函数
# [{'name': '张三', 'age': 20}, {'name': '王五', 'age': 22}, {'name': '李明四', 'age': 19}]
stus.sort(key=lambda x: len(x["name"]))

将排序后的结果作为新的列表返回,不会改变原来列表元素位置

sorted() 函数
多维列表