列表是 Python 中基本的数据结构,列表中的每个元素都分配一个数字——索引(位置),第一个索引是 0,第二个索引是 1, 以此类推
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可
# 新建列表
testlist = [10086, '中国移动', [1,2,3,4,5]]
print('testlist: ', testlist)
print()
# 访问列表长度
print('len(testlist): ', len(testlist))
*上述代码输出结果: *
testlist: [10086, '中国移动', [1, 2, 3, 4, 5]] len(testlist): 3
可以使用下标索引来访问列表中的值(正序和倒序都可),同样也可以使用方括号的形式截取元素
# 从第二个元素 访问到 列表结尾
print('testlis[1:]: ', testlist[1:])
# 向列表添加元素
testlist.append({})
print('testlist.append({}) 后: ', testlist)
# 列表的最后一个元素
print('testlist[-1]: ', testlist[-1])
# 弹出列表元素
testlist.pop(1)
print('testlist.pop(1) 后: ', testlist)
# 更新列表元素
testlist[0] = 1008611
print('使用 testlist[0] = 1008611 更新列表后 ')
print('testlist[0] = ', testlist[0])
# 使用 del 删除列表元素
print('原始列表: ', testlist)
del testlist[2]
print('删除第三个元素后的列表: ', testlist)
*上述代码输出结果: *
testlis[1:]: ['中国移动', [1, 2, 3, 4, 5]]
testlist.append({}) 后: [10086, '中国移动', [1, 2, 3, 4, 5], {}]
testlist[-1]: {}
testlist.pop(1) 后: [10086, [1, 2, 3, 4, 5], {}]
使用 testlist[0] = 1008611 更新列表后
testlist[0] = 1008611
原始列表: [1008611, [1, 2, 3, 4, 5], {}]
删除第三个元素后的列表: [10086, [1, 2, 3, 4, 5]]
列表脚本操作符
[1,2,3]+[4,5,6]
结果为 [1,2,3,4,5,6],用于组合列表
['Hi']*4
结果为 [‘Hi’,‘Hi’,‘Hi’,‘Hi’],用于重复列表
3 in [1,2,3]
结果为 True,元素是否存在于列表中
列表函数和方法len(list)----- 列表元素的个数 max(list)----- 返回列表元素的最大值 min(list)----- 返回列表元素的最小值 list(seq)----- 将元组转化为列表
list.append(obj)---------- 在列表末尾添加新的对象 list.count(obj)----------- 统计某个元素在列表中出现的次数 list.extend(seq)---------- 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) list.index(obj)----------- 从列表中找出某个值第一个匹配项的索引位置 list.insert(index, obj)--- 将对象插入列表 list.pop([index=-1])------ 移除列表中的一个元素(默认最后一个元素,可以改),并返回该元素的值 list.remove(obj)---------- 移除列表中某个值的第一个匹配项 list.reverse()------------ 反向列表中元素 list.clear()-------------- 清空列表 list.copy()--------------- 复制列表 list.sort(key=None, reverse=False)-- 对原列表进行排序,默认是正序列表构成矩阵
# 列表构成矩阵
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
print('matrix: ', matrix)
print('matrix[1]: ', matrix[1])
print('matrix[1][1]: ', matrix[1][1])
print()
col2 = [row[1] for row in matrix]
print('col2 = [row[1] for row in matrix]: ', col2)
col2even = [row[1] for row in matrix if row[1] % 2 == 0]
print('col2even = [row[1] for row in matrix if row[1] % 2 == 0]: ', col2even)
*上述代码输出结果: *
matrix: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] matrix[1]: [4, 5, 6] matrix[1][1]: 5 col2 = [row[1] for row in matrix]: [2, 5, 8] col2even = [row[1] for row in matrix if row[1] % 2 == 0]: [2, 8]列表转化为字符串
temp_list = ['H', 'e', 'l', 'l', 'o'] result = ''.join(temp_list) print(result) # Hello常用操作性能
按索引取值和赋值 ( v=a[i], a[i]=v )
由于列表的随机访问特性,这两个操作执行时间与列表大小无关,均为 O(1)
列表增长,append() ,__add__() "+"
list.append(v) , 执行时间是 O(1)
list= list +[v] , 执行时间是 O(n+k),其中 k 是被加的列表长度
| Operation | Big-O Efficiency |
|---|---|
| index [] | O(1) |
| index assignment | O(1) |
| append | O(1) |
| pop() | O(1) |
| pop(i) | O(n) |
| insert(i, item) | O(n) |
| del operator | O(n) |
| iteration | O(n) |
| contains(in) | O(n) |
| get slice [x : y] | O(k) |
| del slice | O(n) |
| set slice | O(n+k) |
| reverse | O(n) |
| concatenate | O(k) |
| sort(归并) | O(n log n) |
| multiply | O(nk) |



