python数据结构学习整理-列表
列表的定义:
1. 列表是有序的可变元素集合,使用中括号[]包围,元素之间用逗号分隔
2. 列表是动态的,可以随时扩展和收缩
3. 列表是异构的,可以同时存放不同类型的对象
4. 列表中允许出现重复元素
- 列表的使用-创建
1. 构造方法list()
list1 = list('testing') print(type(list1),list1)
2. 中括号填充元素[]
list2 = [1, 2, 4] list3 = ['testing', 'www'] list4 = [1, 3.1424, 'testing', [5, 6, 7, 8]] print(type(list4), list4)c
3. 列表推导式
list5 = [i for i in range(1,100) if i % 2 ==0] print(type(list5),list5)
- 列表的使用-索引
1. 正向索引
list6 = [1, 2, 3 ,4 ,5] #1、正向索引 print(list6[2])
2. 反向索引
list6 = [1, 2, 3 ,4 ,5] #2、正向索引 print(list6[-3])
- 列表的使用-索引
"""列表的使用:切片 切片[start:stop:step] - start值:指示开始索引值,如果没有指定,则默认开始值为0; - stop值:指示到那个索引值结束,但不包括这个结束索引值。如果没有指定,则取列表允许的最大索引值; - step值:步长值指示每一步大小,如果没有指定,则默认步长值为1 - 三个值都是可选的,非必填 """
- 列表的使用-运算符
1. * 号
# 1. * 号 list7 = [1] print(list7 * 3)
2. + 号
# 2. + 号 list8 = [1, 2, 3] list9 = [4, 5, 6] print(list8 + list9)
- 列表的使用-成员检测
"""列表的使用:成员检测 - in: 检查一个对象是否在列表中,如果在则返回True, 否则返回False - not in: 检查一个列表是否不包含某个元素。如果不在返回True, 否则返回False """
list10 = [1, 2, 3] print(1 in list10) print(100 in list10) print(100 not in list10)
- 列表的方法-append()
"""列表的方法append() - append(item): 将一个对象item添加到列表的末尾 - 入参:对象item - 返回: None """
# append(item) list11 = [] list11.append(1) list11.append("testing") print(len(list11), list11)
- 列表的方法-extend()
"""列表的方法extend() - extend(iterable): 将一个可迭代对象的所有元素,添加到列表的末尾 - 入参:可迭代对象iterable - 返回: None """
# extend(iterable) list12 = [] list12.extend('testing') list12.extend('wtt') print(len(list12), list12)
- 列表的方法-insert()
"""列表的方法insert() - insert(index, item): 将一个对象插入到指定的索引位置 - 入参:索引值index, 一个对象item - 返回: None - 原索引位置及后面的元素后移一位 """
# insert(index, item) list13 = [1, 2, 3, 4, 5] list13.insert(0, 'testing') list13.insert(3, 'hello') print(list13)
- 列表的方法-pop()
"""列表的方法pop() - pop(index)或pop() - 弹出并返回所指定索引的元素 - 入参:索引值index, 可不传 - 返回:指定索引的元素 - 返回:未指定索引则返回末尾元素 - 如果索引值不正确,或者列表已经为空,则引发IndexError错误 """
list14 = [1, 2, 3, 4, 5] print(list14) data = list14.pop(1) print(data, list14)
- 列表的方法-remove()
"""列表方法remove() - remove(item) - 移除列表中第一个等于item的元素 - 入参:指定元素item - 返回:None - 目标元素必须已存在,否则会报ValueError """
# remove(item) list15 = ['a', 'b', 'c'] list15.remove('c') print(list15)
- 列表的方法-sort()
"""列表方法sort() - sort(key=None, reverse=False) - 对列表进行原地排序,只使用< 来进行各项间比较 - 入参:支持2个关键字参数: -- key: 指定带有一个参数的函数,用于从每个列表元素中提取比较键 -- reverse: 默认值为False表示升序,为True表示降序 - 返回: None """
# sort(key=None, reverse=False) list16 = [1, 2, 5, 7 ,3] #升序 list16.sort() print(list16) #降序 list16.sort(reverse=True) print(list16) # 指定按照元素长度排序 list17 = ['python', 'java', 'Go', 'R'] list17.sort(key=len) print(list17)
- 列表的方法-reverse()
"""列表方法reverse() - reverse(): 将列表中的元素顺序反转 - 参数:无 - 返回:None - 反转只针对索引值,元素之间不相互比较 """
# reverse() list18 = ['a', 'd', 'c'] list18.reverse() print(list18)
- 列表的嵌套
"""列表嵌套 - 嵌套列表是指在列表里存放列表 - 列表的常用方法都使用于嵌套列表 """
list19 = [[1, 2, 3], ['python', 'java', 'Go', 'R']] print(list19[1][2]) list19[1].append('C') print(list19)
- 列表推导式
"""列表推导式 - 列表推导式是指循环创建列表,相当于for循环创建列表的简化版 - 语法: [x for x in li if x ...] """
""" 实例: 将1-10的所有偶数平方后组成新的列表 """ #1. 传统方法-for循环 result = [] for ele in range(1,11): if ele % 2 == 0: result.append(ele ** 2) print(result) #2. 使用列表推导式 resutlt = [ele ** 2 for ele in range(1,11) if ele % 2 == 0] print(result)