目录
一、作用:用来存多个值,并且索引的值为对应的值,按位置存放多个值
二、定义
l = [1, 1.2, 'yan', [21, 99]]
三、类型转化
但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表
res=list('hello')
print(res)
['h', 'e', 'l', 'l', 'o']
res=list({'k1':111,'k2':222,'k3':3333})
print(res)
['k1', 'k2', 'k3']
四、内置方法
1、按索引存取值(正向存取+反向存取):即可以取也可以改
正向取:
l = [111, 'egon', 'hello']
print(l[0])
111
反向取:
l = [111, 'egon', 'hello']
print(l[-1])
hello
可以取也可以改:索引存在则修改对应的值
l = [111, 'egon', 'hello']
l[0]=222 # 将列表的第一个值改为222
print(l)
[222, 'egon', 'hello']
无论是取值操作还是赋值操作:索引不存在则报错
2、切片(顾头不顾尾,步长)
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[0:3])
print(l[0:5:2])
print(l[0:len(l)])
print(l[:])
[111, 'egon', 'hello']
[111, 'hello', 'b']
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
msg1='hello:egon:<>:18[]==123'
msg2=msg1[:]
print(msg1,id(msg1))
print(msg2,id(msg2))
hello:egon:<>:18[]==123 2473211243232 # id 地址相同
hello:egon:<>:18[]==123 2473211243232
3、长度(len())
print(len([1, 2, 3])) # 判断字符长度
3 # 长度为3
4、成员运算in和not in
in : 判断字符是否在大字符串中
print('aaa' in ['aaa', 1, 2]) # True
print(1 in ['aaa', 1, 2]) # True
not in :判断字符是否不在大字符串中
print(3 not in ['aaa', 1, 2]) # True
print(not 3 in ['aaa', 1, 2]) # True # 能够使用 但不推荐 使用 not.....in....
5、往列表中添加值
5.1 追加 (.append())
从后往前加
l = [111, 'egon', 'hello']
l.append(3333) # 将 3333 添加到列表l中 从后往前加
l.append(4444) # 将 4444 添加到列表l中 从后往前加
print(l)
[111, 'egon', 'hello', 3333, 4444]
new_l=[1,2,3]
l=[111,'egon','hello']
l.append(new_l) # 将 new_l的值添加到 l 中
print(l)
[111, 'egon', 'hello', [1, 2, 3]]
5.2 插入值 (.insert())
根据位置插入
l = [111, 'egon', 'hello']
l.insert(0, 'alex') # 将 alex 插入列表 0 号位置
print(l)
['alex', 111, 'egon', 'hello']
5.3 extend添加值
l = [111, 'egon', 'hello']
new_l=[1,2,3]
l.extend(new_l) 将 列表 new_l 添加到列表l中 从后往前加
print(l)
[111, 'egon', 'hello', 1, 2, 3]
6、删除
方式一:通用的删除方法,只是单纯的删除、没有返回值
l = [111, 'egon', 'hello']
del l[1]
# x = del l[1] # 抛出异常,不支持赋值语法
print(l)
[111, 'hello']
方式二:.pop()根据索引删除,会返回删除的值
l = [111, 'egon', 'hello']
l.pop() # 不指定索引默认删除最后一个
l.pop(0) # 删除 第一个
print(l)
[111, 'egon']
['egon', 'hello']
方式三:.remove()根据元素删除,返回None
l = [111, 'egon', [1, 2, 3], 'hello']
l.remove([1, 2, 3])
print(l)
[111, 'egon', 'hello']
l = [111, 'egon', [1, 2, 3], 'hello']
res = l.remove('egon')
print(res) # None
print(l)
None
[111, [1, 2, 3], 'hello']
7、循环
l = [1, 'aaa', 'bbb']
for x in l:
l.pop(1)
print(x)
1
bbb
五、需要掌握的操作
-
.count() 统计某个元素在列表中出现的次数
l = [1, 'aaa', 'bbb','aaa','aaa'] print(l.count('aaa')) 3 # aaa 在列表 l 中出现3次
-
.index() 打印某个元素的索引(如果找不到就会报错)
l = [1, 'aaa', 'bbb','aaa','aaa'] print(l.index('aaa')) print(l.index('aaaaaaaaa')) # 找不到报错 1 ValueError: 'aaaaaaaaa' is not in list # 报错信息
-
.clear() 清空列表
l = [1, 'aaa', 'bbb','aaa','aaa'] l.clear() print(l) [] # 列表 l 被clear 清空
-
.reverse() 将列表倒过来(不是排序)
l = [1, 'egon','alex','lxx'] l.reverse() print(l) ['lxx', 'alex', 'egon', 1] # reverse 将列表 l 倒过来
-
.sort() 列表内元素必须是同种类型才可以排序
l = [11, -3, 9, 2, 3.1] l.sort() # 默认从小到大排,称之为升序 l.sort(reverse=True) # 从大到小排,设置为降序 print(l) [-3, 2, 3.1, 9, 11] [11, 9, 3.1, 2, -3] #.sort(reverse=True)
了解:字符串可以比大小,按照对应的位置的字符依次pk
字符串的大小是按照ASCI码表的先后顺序加以区别,表中排在后面的字符大于前面的
print('a'>'b') # False b>a z>a
print('abz'>'abcdefg') # 比较首个字符 如果相同比较一下个字符 大小与字符串长度无关
False
True
了解:列表也可以比大小,原理同字符串一样,但是对应位置的元素必须是同种类型
l1 = [1, 'abc', 'zaa'] # l1 < l2 比较第一个值 abc 大小相同比较第二个值
l2 = [1, 'abc', 'zb'] # l1 'zaa' l2 'zb' 首个字符相同 比较第二个字符 a < b 所以 l2 >l1
print(l1 < l2)
True
六、补充
1、队列:FIFO,先进先出
入队操作
l = []
l.append('first')
l.append('second')
l.append('third')
print(l)
['first', 'second', 'third']
出队操作
l = ['first', 'second', 'third']
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
first
second
third
2、堆栈:LIFO,后进先出
入栈操作
l = []
l.append('first')
l.append('second')
l.append('third')
print(l)
['first', 'second', 'third']
出队操作
l = ['first', 'second', 'third']
print(l.pop())
print(l.pop())
print(l.pop())
third
second
first