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))

 

 

posted @ 2020-12-23 17:57  小熊渣渣  阅读(91)  评论(0)    收藏  举报