列表类型
作用:存放多个值
定义
l=[1,1.2,'a']
print(type(l))
>>>
list
类型转换
但凡能够被for循环遍历的类型都可以当作参数传给lIstanbul()进行转换,转换成列表
res=list('hello')#把字符串转换成列表
print(res)
>>>
['h','e','l','l','o']
res=list({'k1':111,'k2':222,'k3':3333})#索引的是key
print(res)
>>>
['k1','k2','k3']#字典是无序的,索引取的是key
按索引取值能分为 正向取 反向取和可以取也可以改
正向取
l= [111,'egon','hello']
print(l[0])
>>>
[111]
反取向
l= [111,'egon','hello']
print(l[-1])
>>>
[hello]
可以取也可以改
l = [111,'egon','hello']
print(l[o])#取值
>>>
111
print(l[3])#索引不存在则报错
>>>报错
l[0] = 222#索引存在则修改对应的值
print(l)
>>>
[222,'egon','hello']
l[3] = 333#索引不存在则报错
print(l)
>>>
报错
切片
顾头不顾尾(最后一个值取不到)
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[0:3])#前面的0就是从0开始索引,后面的3就是索引到第三位,因为顾头不顾尾所以最后一个取不到,只取前两个
>>>
[111,'egon']
步长
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[0:5:2]) #一次跳两个格,步长为2
>>>
[111,'hello','b']
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[0:len(l)])#len是量有多少个字符,在这里连用就是全部切下来的意思
>>>
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[:])#前一个空格就是默认从0开始索引,后一个空格就是默认后面有多少内容就输入多少内容
new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
>>>
[111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
反步长
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
print(l[::-1])#-1就是从最后一个反向输入
>>>
[[1, 2, 3], 'd', 'c', 'b', 'a', 'hello', 'egon', 111]
len()
长度
a = [1, 2, 3]
print(len(a))#测一共有多少个字符
>>>
3
成员运算 in not in
print('aaa' in ['aaa', 1, 2])#判断aaa是否在['aaa',1,2]l列表中
>>>
True
print(1 in ['aaa', 1, 2])#判断1是否在['aaa',1,2]l列表中
>>>
True
apprnd()
往列表中添加值
a = []
a.append(11)
a.append(22)
print(a)
>>>
[11,22]#append永远都是往列表的末尾加值
a=[]
aa=[]
a.append(111)
aa.append(222) #哪个列表调用append,就往哪个列表里面加值
print(a)
>>>[111]
print(aa)
>>>
[222]
insert()
插入值
l=[111,'egon','hello']
l.insert(0,'alex')#可以指定插入的位置,0就是从左到右第一个位置插入
print(l)
extend()
添加值
l=[111,'egon','hello']
new_l=[1,2,3]
l.extend(new_l)#extend就像for循环,把值依次取出,然后再依次添加
print(l)
>>>
[111,'egon','hello',1,2,3]
item
依次取出元素
l=[111,'egon','hello']
new_l=[1,2,3]
for item in new_l:
l.append(item)
print(l)
>>>
[111,'egon','hello',1,2,3]
删除
方式一:del
通用的删除方法,只是单纯的删除、没有返回值
l = [111, 'egon', 'hello']
del l[1]
x =del l[1] # 抛出异常,不支持赋值语法
print(l)
['egon','hello']
方式二:pop()
根据索引删除,会返回删除的值
l = [111, 'egon', 'hello']
l.pop() # 不指定索引默认删除最后一个
l.pop()
print(l)
>>>
[111]
l = [111, 'egon', 'hello']
res=l.pop(1)#把删除元素的赋值给一个变量名,然后可以通过变量名查看删除的元素
print(l)
>>>
egon #删除的就是egon
方式三: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# 返回值为None,就是空的意思
循环
l=[1,'aaa','bbb']
for x in l:#in后面有三个值就循环三次
print(x)
>>>
1
aaa
bbb
count()
统计次数
l = [1, 'aaa', 'bbb','aaa','aaa']
print(l.count('aaa'))
>>>
3
index()
查找索引,返回找到的第一个索引,找不到则报错
l = [1, 'aaa', 'bbb','aaa','aaa']
print(l.index('aaa'))
>>>
True
print(l.index('aaaaaaaaa'))
>>>
Fales
reverse():
反转(把序列倒过来的意思)
l = [1, 'egon','alex','lxx']
l.reverse()
print(l)
>>>
['lxx', 'alex', 'egon', 1]
sort()
排列,列表元素必须是同种类型才可以排序
l=[11,-3,9,2,3.1]
l.sort() # 默认从小到大排,称之为升序
l.sort(reverse=True) # 从大到小排,设置为降序
print(l)
[11, 9, 3.1, 2, -3]
l=['c','e','a']
l.sort()
print(l)
>>>
['a', 'c', 'e']
字符串也是可以比大小的,按照SCI码表的先后顺序区别表中排在后面的字符大于前面的
print('a'>'b')
>>>
False
print('abz'>'abcdefg')
>>>
True
列表也可以比大小,同理跟字符串一样
l1=[1,'abc','zaa']
l2=[1,'abc','zb']
print(l1 < l2)#越是后面的字母越大
>>>
True
队列:
FIFO,先进先出
入队操作
l=[]
l.append(1)#append永远是往列表末尾添加值
l.append(2)
l.append(3)
print(l)
出队操作
print(l.pop(0))#不指定删除位置,默认删除最后一个
print(l.pop(0))
print(l.pop(0))
堆栈:
后进先出
l=[]
入栈操作
l.append('first')
l.append('second')
l.append('third')
print(l)
出队操作
print(l.pop())
print(l.pop())
print(l.pop())