1、列表
1.1、作用:按位置存放多个值
1.2类型转换:但凡能够被for循环遍历的类ing都可以当作参数传给list()转成列表
res = list('hello')
print(res)
res = list({'k1':11,'k2':22,'k3':333})
print(res)
1.3、内置方法
1.3.1、按索引存取值(正向存取+反向存取):即可以取可以改
l=[111,'egon','hello']
# 正向取
print(l[0])
# 反向取
print(l[-1])
# 可以取也可以改:索引存在则可以改对应的值
l[0]=222
print(l)
# 无论是取值操作还是赋值操作 :索引不存在则报错
l[3]=333
print(l)
1.3.2、切片(顾头不顾尾,步长)
l = [111,'egon','hello','a','b','c','d',[1,2,3]]
print(l[0:3])
print(l[0:5:2]) # 0 2 4
print(l[0:len(l)])
print(l[:])
new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
print(id(l))
print(id(new_l))
l[-1][0]=1111
print(l)
print(new_l)
print(l[::-1]) # 把列表倒过来
1.3.3、长度
print(len([1,2,3]))
1.3.4、成员运算in和not in
print('aaa' in ['aaa','adad'])
print('asd' not in ['aaa','adad'])
1.4、往列表中添加值
1.4.1、追加
l=[111,'egon','hello']
l.append(444)
l.append(333)
print(l)
1.4.2、插入值
l=[111,'egon','hello']
l.insert(1,'afsa')
print(l)
1.4.3、extend 列表值放到另一个列表中
new_l=[1,2,3]
l=[111,'egon','hello']
l.append(new_l)
print(l)
# 代码实现
for item in new_l:
l.append(item)
print(l)
# extend实现上述代码
l.extend(new_l)
l.extend('awrd')
print(l)
1.4.4、删除
# 方式一:通用删除方法,只是单纯的删除,没有返回值
l=[111,'egon','hello']
del l[1]
x = del l[1] # 抛出异常,不支持赋值语法
print(l)
# 方式二:l.pop():根据索引删除,会返回删除的值
l = [111,'egon','hello']
l.pop() # 不指定索引默认删除最后一个
l.pop
print(l)
res = l.pop(1)
print(l)
print(res)
# 方式三:l.remove()根据元素删除,返回None
l = [111,'egon',[1,2,3],'hello']
l.remove([1,2,3])
print([1,2,3])
res = l.remove('egon')
print(res)
1.5、需要掌握操作
l = [1, 'aaa', 'bbb', 'sfsd', 'fgdg']
# 1、l.count(): 在列表中出现的次数
print(l.count('aaa'))
# 2、l.index
print(l.index('aaaaa')) # 找不到报错
# 3、l.clear() :清空列表
l.clear()
print(l)
# 4、l.reverse():不是排序,就是将列表倒过来
l.reverse()
print(l)
# 5、l.sort(): 列表内的元素,必须是同种类型才可以排序
l=[11,-23,9,3]
l.sort()
print(l)
l=['c','b','a','e']
l.sort()
print(l)
# 了解:字符串可以比大小,按照对应的位置的字符依次pk
# z字符串的大小按照ASCI码表的先后顺序区别,表中排在后面的字符大于前面的
print('z'>'aasd')
print('abz'>'abcda')
# 了解:列表也可以比大小,原理同字符串一样,但是对应的位置的元素,必须同种类型
l1=[1,'abc','zaa']
l2=[1,'abc','zsd']
print(l1 < l2)
补充:
# 队列:FIFO先进先出
l=[]
# 入队操作
l.append('first')
l.append('second')
l.append('third')
print(l)
# 出队操作
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
# 2、堆栈:LIFO,后进先出
l=[]
# 入栈操作
l.append('first')
l.append('second')
l.append('third')
print(l)
# # 出栈操作
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
2、元组:元组就是”一个不可变的列表“
2.1、作用:按照索引/位置存放多个值,只用于读不用于改
2.2、定义:() 内用括号分隔开多个任意类型的元素
t=(1,1.3,'aa') # t=tuple(1,1.3,'aa')
print(t,tuple(t))
x=(10) # 单独一个括号代表包含的意思
print(x,type(x))
t=(10,) # 如果元素中只有一个元素,必须加逗号
print(t,type(t))
t=(1,[11.22]) # t=(0-值1的内存地址,1-值[1,2]的内存地址)
print(id(t[0]),id(t[1]))
t[0]=1111111 # 不能改
t[1]=2222222 # 不能改
t[1][0]=111111111111
print(t)
print(id(t[0]),id(t[1]))
3、字典
3.1、定义:{}内用逗号分隔开多个kev:value,其中value可以使用任意类型,但是key必须是不可变类型,且不能重复
d={'k1':111,(2,2,3):222} # d=dict(...)
print(d['k1'])
print(type(d))
d = {} # 默认定义出来的是空字典
print(d,type(d))
d = dict(x=1,y=2,v=4)
print(d,type(d))
3.2、数据类型转换
info=[
['name','egon'],
('age',18),
['genber','male']
]
d={}
for item in info:
d[item[0]]=item[1]
print(d)
for k,v in info:
d[k]=v
print(d)
res = dict(info) # 一行代码搞定上述for循环的工作
print(res)
# 造字典的方式:快速初始化字典
keys=['name','age','gender']
d={}
for k in keys:
d[k]=None
print(d)
d={}.fromkeys(keys,None)
print(d)
3.3、内置方法
#优先掌握的操作
3.1、按key存取值:可存可取
d={'k1':111}
# 针对赋值操作:key存在,则修改
d['k1']=222
# 针对赋值操作:key不存在,则创建新值
d['k2']=333
print(d)
3.2、长度len
d={'k1': 111, 'k2': 333}
print(d)
3.3、成员运算in和not in
d={'k1':111,'k2':222}
print('k1' in d)
print(111 in d)
3.4、删除
d={'k1':111,'k2':222}
3.4.1 通用删除
del d['k1']
print(d)
3.4.2 pop 删除:
res=d.pop('k2')
print(d)
print(res)
3.4.3 popitem删除:随机删除,返回元组(删除的key,删除的value)
res=d.popitem()
print(d)
print(res)
3.5、建keys(),值values(),键值对itmes()
for循环
for k in d.keys():
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k,v)
print(list(d.keys()))
print(list(d.values()))
print(list(d.items()))
3.5、需要掌握的
d={'k1':121}
# 1、d.clear() # 清空
# 2、d.update() # 更新字典,以新字典为主
d.update({'k2':111,'k3':333})
print(d)
# 3、d.get()
print(d['k2']) ## key不存在则报错
print(d.get('k1')) # 111
print(d.get('k2')) # key不存在不报错,返回None
# 4、d.setdefault()
info = {}
if 'name' in info:
... # 等同于pass
else:
info['name']='egon'
print(info)
# 4.1 如果k1有则不添加,返回字典中key对应的值
info={'name':'egon'}
info.setdefault('name','egon')
print(info)
# 4.2 如果key没有添加,返回字典中key对应的值
info={}
res=info.setdefault('name','egon')
print(info)
print(res)