day07 基本数据类型(列表、元组、字典)
01、列表
作用:多个装备,多个爱好,多门课程等
定义:[]内可以有多个任意类型的值,逗号分隔
my_friends = ['alex', 'wupeiqi', 'yuanhao', 4, 5]
l = list('abc')
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
1.1正向取(从左到右)
l = ['hello',234,666,4,'world']
print(l[0])
hello
1.2.反向取(负数表示从右到左)
print(l[-1])
world
2、切片(顾头不顾尾,步长)
>>> l=[11,22,33,44,55,66,77]
>>> l[0:6:2]
[11, 33, 55]
>>> l = [11, 22, ["xx", "yy"]]
>>> new_l = l[:]
>>> l
[11, 22, ['xx', 'yy']]
>>> new_l
[11, 22, ['xx', 'yy']]
>>> l[0]=66
>>> l
[66, 22, ['xx', 'yy']]
>>> new_l
[11, 22, ['xx', 'yy']]
>>> id(l[0]),id(l[1]),id(l[2])
8791299133120 8791299131712 39397824
>>> id(new_l[0]),id(new_l[1]),id(new_l[2])
8791299131360 8791299131712 39397824
>>> l = [11, 22, ["xx", "yy"]]
>>> new_l = l[:]
>>> new_l[2][0]=66
>>> l
[11, 22, [66, 'yy']]
>>> new_l
[11, 22, [66, 'yy']]
>>> id(l)
39432320
>>> id(new_l[0]),id(new_l[1]),id(new_l[2])
(8791299131360, 8791299131712, 39399296)
>>> id(l[0]),id(l[1]),id(l[2])
(8791299131360, 8791299131712, 39399296)
from copy import deepcopy
new_l1 = deepcopy(l)
print(id(l[0]), id(l[1]), id(l[2]))
print(id(new_l1[0]), id(new_l1[1]), id(new_l1[2]))
new_l1[2][0]="zzzzz"
print(new_l1)
print(l)
3、长度
len(l)
4、成员运算in和not in
>>> l
[11, 22, [66, 'yy']]
>>> "yy" in l
False
>>> 11 in l
True
>>> [66,'yy'] in l
True
5、追加
5.1append()列表尾部追加元素
>>> l
[11, 22, [66, 'yy']]
>>> l.append("d")
>>> l
[11, 22, [66, 'yy'], 'd']
5.2 extend()一次性在列表尾部添加多个元素
>>> l
[11, 22, ['xx', 'yy']]
>>> l.extend([3,4,5])
>>> l
[11, 22, ['xx', 'yy'], 3, 4, 5]
5.3 insert()在在指定位置插入元素
>>> l
[11, 22, ['xx', 'yy'], 3, 4, 5]
>>> l.insert(2,"hello")
>>> l
[11, 22, 'hello', ['xx', 'yy'], 3, 4, 5]
6、删除
6.1 del
>>> l = [11,22,33,44]
>>> del l[2]
>>> l
[11, 22, 44]
6.2 pop()
默认删除列表最后一个元素,并将删除的值返回,括号内可以同过加索引值指定删除元素
>>> l = [11,22,33,44]
>>> res=l.pop()
>>> res
44
>>> l
[11, 22, 33]
>>> l = [11,22,33,44]
>>> l.pop(0)
11
>>> l
[22, 33, 44]
6.3 remove()
括号内指明道姓表示要删除哪个元素,没有返回值
>>> l = [11,22,33,44]
>>> l.remove(33)
>>> l
[11, 22, 44]
7、循环
for x in l:
print(x)
for i,x in enumerate(l):
print(i,x)
8、reverse()颠倒列表内元素顺序
>>> l = [11,22,33,44]
>>> l.reverse()
>>> l
[44, 33, 22, 11]
9、sort()给列表内所有元素排序
>>> l = [11,24,99,67,3]
>>> l.sort()
>>> l
[3, 11, 24, 67, 99]
>>> l.sort(reverse=True) #reverse用来指定是否跌倒排序,默认为False
>>> l
[99, 67, 24, 11, 3]
需要掌握的操作(****)
l=[11,22,33,44,33,33,55]
new_l = l.copy() # new_l = l[:]
print(len(l)) # l.__len__()
l.index()
print(l.index(33))
print(l.index(7777))
l.count()
print(l.count(33))
l.clear()
l.clear()
print(l)
l.extend()
l.extend("hello")
l.extend([1,2,3])
l.append([1,2,3])
print(l)
l.reverse()
l.reverse()
print(l)
l.sort()
l=[11,-3,9,7,99,73]
l.sort(reverse=True)
print(l)
总结
存多个值
有序
可变
l=[11,22,33]
print(id(l))
l[0]=77
print(id(l))
02.元组
作用:元组就相当于一种不可变的列表,所以说元组也是按照位置存放多个任意类型的元素
定义方式:在()内用逗号分隔开个多个任意类型的元素
>>> x=(11)
>>> print(x,type(x))
11 <class 'int'>
>>> x=(11,)
>>> print(x,type(x))
(11,) <class 'tuple'>
t=(11,11.33,"xxx",[44,55]) # t = tuple(...)
print(t[-1][0])
print(type(t))
数据类型转换
tuple(可迭代的类型)
注意:如果元组内只有一个元素,那么必须用逗号分隔
t=(11,)
print(type(t))
1.常用操作+内置的方法
优先掌握的操作:
① 按索引取值(正向取+反向取):只能取
>>> t = (11,22,33)
>>> t[0]
11
② 切片(顾头不顾尾,步长)
>>> t = (11,22,33,44,5,6)
>>> t[0:3:2]
(11, 33)
③ 长度
>>> t = (11,22,33,44,5,6)
>>> len(t)
6
④ 成员运算in和not in
>>> t=(11,22,33,[44,55,666])
>>> 11 in t
True
>>> [44,55,666] in t
True
⑤ 循环
t=(11,22,33,[44,55,666])
for x in t:
print(x)
需要掌握
t=(33,22,33,[44,55,666])
print(t.count(33))
print(t.index(33,1,4))
总结
存多个值
有序
不可变
t=(11,22,[33,44])
t[2]=777 #报错
print(id(t[0]),id(t[1]),id(t[2])) #id不变
t[2][0]=777777777777777777777777777777 #元组中的列表值可改变
print(t)
print(id(t[0]),id(t[1]),id(t[2])) #id不变

03.字典
1、作用:
按照key:value的方式存放多个值,其中key对value应该有描述性的效果
2、定义方式:
定义:在{}内用逗号分隔开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key则必须是不可变类型,通常key应该是str类型,因为str类型会对value有描述性的功能
info={'name':'tony','age':18,'sex':'male'} #本质info=dict({....})
也可以这么定义字典
info=dict(name='tony',age=18,sex='male') # info={'age': 18, 'sex': 'male', 'name': 'tony'}
3.数据类型转换
>>> res = dict(a=1,b=2,c=3)
>>> print(res)
{'a': 1, 'b': 2, 'c': 3}
>>> d ={}
>>> type(d)
<class 'dict'>
>>> d = dict()
>>> type(d)
<class 'dict'>
转换1:
>>> info=dict([['name','tony'],('age',18)])
>>> info
{'age': 18, 'name': 'tony'}
转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
>>> {}.fromkeys(('name','age','sex'),None)
{'age': None, 'sex': None, 'name': None}
>>> res = {}.fromkeys(['name',"age","gender"],11)
>>> res
{'name': 11, 'age': 11, 'gender': 11}
>>> res["name"]=666
>>> res
{'name': 666, 'age': 11, 'gender': 11}
res = {}.fromkeys(['name',"age","gender"],[])
res["name"]=666
res["name"].append(1111111)
print(res)
4、常用操作+内置的方法
优先掌握的操作:
1、 按key存取值:可存可取
>>> d={"k1":111,'k2':222}
>>> d['k1']
111
>>> d={"k1":111,'k2':222}
>>> d['k2']=666
>>> d
{'k1': 111, 'k2': 666}
>>> d['k3']=555
>>> d
{'k1': 111, 'k2': 666, 'k3': 555}
2、长度len
>>> d={"k1":111,'k2':222}
>>> len(d)
2
3、成员运算in和not in: 判断的是key
>>> d={"name":"egon",'age':18}
>>> "age" in d
True
4、删除
>>> d={"name":"egon",'age':18}
>>> del d["name"]
>>> d
{'age': 18}
>>>
>>> d={"name":"egon",'age':18}
>>> v=d.pop("name") #删除指定的key对应的键值对,并返回值
>>> v
'egon'
>>> d
{'age': 18}
>>> d={"name":"egon",'age':18,"sex":"f"}
>>> item = d.popitem() #随机删除一组键值对,并将删除的键值放到元组内返回
>>> item
('sex', 'f')
>>> d
{'name': 'egon', 'age': 18}
5、键keys(),值values(),键值对items()
>>> d={"name":"egon",'age':18,"gender":"male"}
>>> d.keys()
dict_keys(['name', 'age', 'gender'])
>>> d.values()
dict_values(['egon', 18, 'male'])
>>> d.items()
dict_items([('name', 'egon'), ('age', 18), ('gender', 'male')])
6、循环
d={"name":"egon",'age':18,"gender":"male"}
for k in d.keys():
print(k)

for k in d:
print(k)

for v in d.values():
print(v)

for k,v in d.items(): # k,v = ('gender', 'male'),
print(k,v)

print(list(d.keys()))
print(list(d.values()))
print(list(d.items()))

7、get()
>>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
>>> dic.get('k1')
'jason' # key存在,则获取key对应的value值
>>> res=dic.get('xxx') # key不存在,不会报错而是默认返回None
>>> print(res)
None
>>> res=dic.get('xxx',666) # key不存在时,可以设置默认返回的值
>>> print(res)
666
# ps:字典取值建议使用get方法
8.update()
用新字典更新旧字典,有则修改,无则添加
>>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
>>> dic.update({'k1':'JN','k4':'xxx'})
>>> dic
{'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}
9.setdefault()
key不存在则新增键值对,并将新增的value返回
>>> dic={'k1':111,'k2':222}
>>> res=dic.setdefault('k3',333)
>>> res
333
>>> dic # 字典中新增了键值对
{'k1': 111, 'k3': 333, 'k2': 222}
key存在则不做任何修改,并返回已存在key对应的value值
>>> dic={'k1':111,'k2':222}
>>> res=dic.setdefault('k1',666)
>>> res
111
>>> dic # 字典不变
{'k1': 111, 'k2': 222}
需要掌握(****)
d={"name":"egon",'age':18,"gender":"male"}
d.clear()
print(d)
d.copy() # 浅copy
总结:
存多个值
无序
可变
d={'k1':111}
print(id(d))
d['k1']=2222222
print(id(d))


浙公网安备 33010602011771号