day09_01_列表类型


#1、作用:用来存多个值,按照位置顺序通过索引取值(存多个值,索引对应值)
#2、定义:
# l=[1,2,'hanhan',[111,222]] #l=list([1,2,'hanhan',[111,222]])
# print(type(l))

#3、类型转换:但凡能够被for循环遍历的类型都可以当作参数传给list进行转换
# res=list('hello') #list底层调了一个for循环,循环这个字符串,讲字符取出来当作列表的元素
# print(res) #['h', 'e', 'l', 'l', 'o']

#相当于底下这个代码
# l=[]
# for x in 'hello':
# l.append(x)
# print(l)

# res=list({'k1':111,'k2':222,'K3':333})
# print(res) #['k1', 'k2', 'K3']


#4、内置方法
#优先掌握的方法:
#1、按索引取值(正向取值+反向取值):既可取又可改
# l=[111,'egon','hello']
#正向取
# print(l[0])
#反向取
# print(l[-1])
#可取也可改
# l[0]=222 #索引存在则修改对应的值
# print(l)

#无论是取值操作还是赋值操作,索引不存在
# l[3]=333 #报错,IndexError: list assignment index out of range,超出索引范围


#2、切片(顾头不顾尾,步长)
# l=[111,'egon','hello','a','b','c','d',[1,2,3]]
# res=l[0:3]
# print(res) #[111, 'egon', 'hello']
# res=l[0:5:2] #取到0-4 这五个元素,每隔两个取一个
# print(res) #[111, 'hello', 'b']

#取出原列表
# print(l[0:len(l)])
# new_l=l[:] #切片等同于拷贝行为,而且相当于浅拷贝
# l[-1][0] = 1111 #验证深浅拷贝
# print(l) # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111, 2, 3]]
# print(new_l) # [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1111, 2, 3]]

# print(l[::-1]) #列表倒置


#3、长度
# print(len([1,2,3]))

#4、成员运算in 和 not in
# print('aaa' in ['aaa',1,2])
# print(1 not in ['aaa',1,2])

#5、往列表里添加值
# 5.1追加,append 再列表末尾追加
# l=[111,'egon','hello']
# l.append(333)
# print(l) #[111, 'egon', 'hello', 333]

#5.2插入值
# l=[111,'egon','hello']
# l.insert(1,'alex')
# print(l) #[111, 'alex', 'egon', 'hello'],在原列表索引值1前添加元素

#5.3
# new_l=[1,2,3]
# l=[111,'egon','hello']
# l.append(new_l)
# print(l) [111, 'egon', 'hello', [1, 2, 3]]

# for item in new_l:
# l.append(item)
# print(l) [111, 'egon', 'hello', 1, 2, 3]

#extend:实现上述代码:
# l.extend(new_l)
# print(l) #[111, 'egon', 'hello', 1, 2, 3]
# l.extend('abc')
# print(l) #[111, 'egon', 'hello', 1, 2, 3, 'a', 'b', 'c']

# lll=[]
# l.append(333)
# lll.append(444)


#6、删除
#方式一:通用的删除方法,没有返回值,只是单纯的删除
# l=[111,'egon','hello']
# del l[1] #不支持赋值语法 x=del l[1]
# print(l)

#方式二:l.pop()根据索引删除,不指定索引默认删除最后一个,会返回删除的值
# l=[111,'egon','hello']
# l.pop()
# print(l) [111, 'egon']
# res=l.pop(1) #这是一不是L
# print(l) #[111, 'hello']
# print(res) #egon

#方式三:l.remove()根据元素删除,返回none
# l=[111,'egon','hello']
# # l.remove('egon')
# # print(l)
# res=l.remove('egon')
# print(res) #None

#7、循环
# for x in [1,'aaa','bbbb','aaa']:
# print(x)


#8、需要掌握的的操作
# l=[1,'aaa','bbb','aaa']
# print(l.count('aaa')) #统计aaa出现的次数

# print(l.index('bbb')) #返回元素的索引,找不到报错

# print(l.clear())#清空列表中的所有元素

# l.reverse() #不是排序,就是把列表倒过来
# print(l) #反转列表

# l=[11,-3,9,2]
# # l.sort() #默认从小到大排,即升序,列表中只能为同种类型才可以排序
# l.sort(reverse=True) #设置为降序,即从大到小排
# print(l)

# l=['c','a','b'] #字符串也可以比大小,按照对应的位置的字符依次pk
# 按照ASCI表的先后顺序区分字符串大小,排到后面的比较大
# l.sort()
# print(l)
#
# print('abz' > 'zbcdfj')

#了解:列表之间也可以比较大小,原理同字符串一样
# l1=[1,'abc','zaa']
# l2=[10]
#按照对应位置依次pk,对应位置必须是同种类型
# print(l2>l1) #因为10 > 1,所以L2>L1,输出为True


#补充
#队列;FIFO 先进先出
# l=[]
# #入队操作
# l.append('forst')
# l.append('second')
# l.append('third')
# print(l)

#出队操作
# print(l.pop(0)) #取出forsr
# print(l.pop(0)) #取出second
# print(l.pop(0))

#堆栈:LIFO 后进先出

l=[]
#入栈操作
l.append('forst')
l.append('second')
l.append('third')
print(l)

#出栈操作 后进去的先出来了
print(l.pop()) #取出third
print(l.pop()) #取出second
print(l.pop())
posted @ 2020-12-23 14:31  欢乐二次方  阅读(58)  评论(0)    收藏  举报