数据类型之列表介绍
Posted achai222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型之列表介绍相关的知识,希望对你有一定的参考价值。
1、作用:列表一般用于按位置存放多个值
2、定义:列表是一个由多个数据组成的数据结构
l=[1,1.2,‘a‘] # 相当于l=list([1,1.2,‘a‘]) print(type(l)) # <class ‘list‘>
3、类型转换: 能够被for循环遍历的类型都可以使用list()转成列表
res=list(‘hello‘) print(res) s = "hello" l = [] for i in s: l.append(i) print(l)
转化的方法为通过for循环遍历添加
4、内置方法
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可以取也可以改
l=[111,‘egon‘,‘hello‘] # 正向取值 print(l[0]) # 反向取值 print(l[-1]) # 可以取也可以改:索引存在则修改对应的值 l[0]=222 print(l) # 无论是取值操作还是赋值操作:索引不存在则报错 l[3]=333
2、切片(顾头不顾尾,步长)
?
l = [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1, 2, 3]] print(l[0:3]) # [111, ‘egon‘, ‘hello‘] print(l[0:5:2]) # 取索引为0 2 4的值 # [111, ‘hello‘, ‘b‘] ? print(l[0:len(l)]) # [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1, 2, 3]] print(l[:]) # [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1, 2, 3]] new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy print(id(l)) # 2277356332168 print(id(new_l)) # 2277356332936 ? l[-1][0]=1111111 # 修改原列表,验证切片与浅拷贝类似 print(l) # [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1111111, 2, 3]] print(new_l) # [111, ‘egon‘, ‘hello‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, [1111111, 2, 3]] print(l[::-1]) # [[1111111, 2, 3], ‘d‘, ‘c‘, ‘b‘, ‘a‘, ‘hello‘, ‘egon‘, 111]
3、长度
print(len([1, 2, 3])) # 3
4、成员运算in和not in
print(‘aaa‘ in [‘aaa‘, 1, 2]) # True print(1 in [‘aaa‘, 1, 2]) # True
5、往列表中添加值
5.1 追加
在列表尾部添加数据
l=[111,‘egon‘,‘hello‘] l.append(3333) l.append(4444) print(l) # l=[111,‘egon‘,‘hello‘,3333,4444]
5.2、插入值
按照填入的索引,在对应的位置插入数据
l=[111,‘egon‘,‘hello‘] l.insert(0,‘alex‘) print(l) # [‘alex‘, 111, ‘egon‘, ‘hello‘]
5.3、extend添加值
extend可以将新列表内的数据添加到原列表
如果我们想将一个新的列表内的数据添加到原列表,使用append无法实现,如下列代码
new_l = [1,2,3] l = [111, ‘egon‘, ‘hello‘] l.append(new_l) print(l) # [111, ‘egon‘, ‘hello‘, [1, 2, 3]]
我们可以使用extend方法
new_l = [1, 2, 3] l = [111, ‘egon‘, ‘hello‘] for item in new_l: l.append(item) print(l) # [111, ‘egon‘, ‘hello‘, 1, 2, 3] # 实现了功能 l.extend(‘abc‘) print(l) # [111, ‘egon‘, ‘hello‘, 1, 2, 3, ‘a‘, ‘b‘, ‘c‘]
6、删除
方式一:通用的删除方法,只是单纯的删除、没有返回值
l = [111, ‘egon‘, ‘hello‘] del l[1] print(l) x = del l[1] # 查看返回值,抛出异常,不支持赋值语法
方式二:list.pop()根据索引删除,会返回删除的值
不输入索引时默认删除最后一个数据
l = [111, ‘egon‘, ‘hello‘, 55] l.pop() # 不指定索引默认删除最后一个 l.pop() print(l) # [111, ‘egon‘] res = l.pop(1) print(l) # [111] print(res) # egon
方式三:l.remove()根据元素删除,返回None
l = [111, ‘egon‘, [1,2,3],‘hello‘] l.remove([1,2,3]) print(l) # [111, ‘egon‘, ‘hello‘] res=l.remove(‘egon‘) # 返回值为None print(res) # None
7、循环与列表
不要在循环中对列表进行删除操作!!!!
l=[1,‘aaa‘,‘bbb‘] for x in l: l.pop(1) print(x)
需要掌握操作
l = [1, ‘aaa‘, ‘bbb‘,‘aaa‘,‘aaa‘]
1、l.count()
数输入内容在列表中出现的次数
print(l.count(‘aaa‘))
2、l.index()
查找方法,查找输入内容第一次出现的位置的索引
print(l.index(‘aaa‘)) print(l.index(‘aaaaaaaaa‘)) # 找不到报错
3、l.clear()
清空列表
l.clear() print(l)
4、l.reverse():
注意: reverse不是排序后翻转,是将列表直接倒过来
l = [1, ‘egon‘,‘alex‘,‘lxx‘] l.reverse() print(l)
5、l.sort(): 列表内元素必须是同种类型才可以排序
l=[11,-3,9,2,3.1] l.sort() # 默认从小到大排,称之为升序 l.sort(reverse=True) # 从大到小排,设置为降序 print(l) ? l=[11,‘a‘,12] # 不同类型报错! l.sort() ? l=[‘c‘,‘e‘,‘a‘] # 按ascii码排序,A<a l.sort() print(l)
了解:字符串可以比大小,按照对应的位置的字符依次pk 字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的
print(‘a‘>‘b‘) # False ? print(‘abz‘>‘abcdefg‘) # True
了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型
l1=[1,‘abc‘,‘zaa‘] l2=[1,‘abc‘,‘zb‘] ? print(l1 < l2) # True
补充
1、队列:FIFO,先进先出
l=[] ? # 入队操作 ? l.append(‘first‘) l.append(‘second‘) l.append(‘third‘) print(l) # [‘first‘, ‘second‘, ‘third‘] ? ? # 出队操作 ? print(l.pop(0)) # first ? print(l.pop(0)) # second ? print(l.pop(0)) # third
2、堆栈:LIFO,后进先出
l=[] ? # 入栈操作 ? l.append(‘first‘) l.append(‘second‘) l.append(‘third‘) print(l) # [‘first‘, ‘second‘, ‘third‘] ? # 出队操作 ? print(l.pop()) # third ? print(l.pop()) # second ? print(l.pop()) # first
以上是关于数据类型之列表介绍的主要内容,如果未能解决你的问题,请参考以下文章