序列类型: | list,tuple,range |
l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])
但凡能够被for循环遍历的类型都可以当作参数传给list()转成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
list('hello') # 结果: ['h', 'e', 'l', 'l', 'o'] # 原理 等同与for循环 l1 = [] for x in 'hello': l1.append(x) # 结果: ['h', 'e', 'l', 'l', 'o'] # =================== list({"name":"jason","age":18}) # 结果:['name', 'age'] list((1,2,3)) # 结果:[1, 2, 3] list({1,2,3,4}) # 结果:[1, 2, 3, 4]
# 1、按索引取值(正向存取+反向存取):即可以取也可以改 # 例 l = [111, 'egon', 'hello'] # 正向取 res = l[0] # 111 # 反向取 res = l[-1] # hello # 也可以取可以改:索引存在则修改对应的值 # 把l列表索引位置0的元素修改为222 l[0] = 222 # [222, 'egon', 'hello'] # 无论是取值操作还是赋值操作:索引不存在则报错
2、切片(顾头不顾尾,步长)
# 2、切片 # 【切片】是属于copy行为 (顾头不顾尾)索引的扩展应用 # 取值前三个 l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd'] # 正向取值 x = l[0:3] # [111, 'egon', 'hello'] # 正向步长取值 步长 (2) x1 = l[0:5:2] # [111, 'hello', 'b'] 取索引位置 0 2 4 的值 # 把整个列表倒过来,反向取值 x2 = l[::-1] # ['d', 'c', 'b', 'a', 'hello', 'egon', 111] # 把列表切出来赋值给新列表 new_l = l[:] # 等同于浅拷贝一个列表给新列表new_l #####################################################
3、长度
# 3、长度 # 列表统计 len统计的是元素的个数 X = len([1, 2, 3]) # 3 3个元素 #####################################################
4、成员运算in和not in
# 4、成员运算in 和 not in # 判断aaa是否存在与列表 if 'aaa' in ['aaa', 1, 2]: i = "yes" else: i = "no" # 输出结果 yes ######################################################
5、追加
# 5、往列表里******添加*****值 # 5.1、追加 # (了解) append默认在列表最末端追加 # 例 l = [111, 'egon', 'hello'] l.append(1233) # [111, 'egon', 'hello', 1233] l.append(4445) # [111, 'egon', 'hello', 1233, 4445] ############# # 5.2、插入值 # insert按照指定索引位置插入值 # 例 l = [111, 'egon', 'hello'] l.insert(1, 2222) # [111, 2222, 'egon', 'hello'] # print(l) #############
6、添加
# # 6、 添加 # # 往列表里添加子列表 l = [111, 'egon', 'hello'] new_l = [1, 2, 3] # l.append(new_l) # [111, 'egon', 'hello', [1, 2, 3]] # # print(l) #### # # 把新列表的值添加到现有列表内 # 实现代码 for itme in new_l: l.append(itme) # [111, 'egon', 'hello', 1, 2, 3] # print(l) ##### # extend实现上述功能(推荐) l.extend(new_l) # [111, 'egon', 'hello', 1, 2, 3] l.extend('abc') # [111, 'egon', 'hello', 'a', 'b', 'c'] #########################################################
7、删除
# 7、删除 # 方式一:del通用的删除方法,只是删除没有返回值,不支持赋值语法。 l = [111, 'egon', 'hello'] del l[1] # [111, 'hello'] ###### # # 方式二:.pop是根据索引删除,会返回删除的值。 l = [111, 'egon', 'hello'] l.pop() # [111,'egon'] 默认删除列表最后一个 l.pop(1) # [111,'hello'] # res = l.pop(1) # egon 返回删除的值 ###### # 方式三:.remove()回根据元素删除,返回None l = [111, 'egon', 'hello', ['a', 'b', 'c']] l.remove(['a', 'b', 'c']) # [111, 'egon', 'hello'] #########################################################
8、循环
# 8、循环 l1 = [1, 'aaa', 'bbb'] for x in l1: # 把列表循环出单个元素输出 # !!!!!!!!!!需要掌握!!!!!!!!!!! l = [1, 'aaa', 'bbb', 'aaa', 'aaa'] ############################ # 1、l.count() 查找元素出现次数 res = l.count('aaa') # 输出结果 3 表示在l列表里出现3次 ############# # 2、l.index() 查找元素索引位置,找不到元素程序就报错 res = l.index('aaa') # 输出结果 1 表示 'aaa' 在列表里的索引是1 ############# # 3、l.clear() # 清空整个列表的元素,不能传入值,填写传入值就报错 l.clear() # 输出结果 [] l列表为空,元素全部清楚 ############# # 4、l.reverse() 把列表反转,不是排序行为 l.reverse() # 输出结果 ['aaa', 'aaa', 'bbb', 'aaa', 1] 列表实现反转 ############ # 5、l.sort() 排序 只允许列表内元素为同种数据类型 才可使用此排序 # 默认把元素重小到大排,称之为升序 l12 = [-1,-4,1,0] # l12.sort() # [-4, -1, 0, 1] 把列表升序 l12.sort(reverse=True) # 输出结果 [1, 0, -1, -4] 从大到小排序,设置为降序 # 了解:字符串是可以比大小的,按照对应的位置的字符依次对比 # 字符串是按照ASCI码表的先后顺序区分大小。表内排在的字符越靠后越大。 ############## #了解: 列表类型也可以比大小,原理同字符一样 # 两个列表对比时,对于索引位置必须为同种数据类型,如果数据类型不同程序会报错 l2 = [1,'aa','222'] l3 = [2,'dd','123'] print(l2 > l3) # 结果False ##########################################################
9 、补充
# 补充 # 1、队列:first in first out # FIFO,先进先出 # 模拟入队操作 l4 = [] l4.append('first') l4.append('second') l4.append('third') print(l4) # # 模拟出队操作 print(l4.pop(0)) print(l4.pop(0)) print(l4.pop(0)) # 输出结果 # first # second # third ############ # 2、堆栈:last in first out # LIFO 后进先出 # 模拟入栈 l4 = [] l4.append('first') l4.append('second') l4.append('third') #### # 模拟出栈 print(l4.pop()) print(l4.pop()) print(l4.pop()) # 输出结果 # third # second # first