列表类型

作用:存放多个值

定义

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())
posted on 2020-03-14 20:24  淡然的沐子  阅读(90)  评论(0编辑  收藏  举报