2020-11-09

一.元组

-->元组的创建

tup = (1,2,3,4,5)

print(tup,type(tup))

(1, 2, 3, 4, 5)

print(tup[1])    //同列表索引值,元组也有其属性

2

tup[0] = 10        //元组是不可变序列,不可修改,否则报错

print(tup)

TypeError: 'tuple' object does not support item assignment

-->如果元组非空,必须有一个逗号

tup1 =10,

tup2 =True,

tup3 ='hello',

print(tup1)

print(tup2)

print(tup3)

(10,)

(True,)

('hello',)


tup =10,20,30,40

print(tup)

(10, 20, 30, 40)

a,s,d,f = tup

-->元组的解包 变量值与元组中元素值一样

1.错误示例

tup4 = 1,2,3,4

a,b = tup4

print('a = ',a)

 print('b = ',b)

valueError: too many values to unpack (expected 2)

print('a = ',a)

print('s = ',s)

print('d = ',d)

print('f = ',f)

a =  10

s =  20

d =  30

f =  40

-->变量值与元组中元素值不一样,变量前添加*,那么这个变量将剩余元素保存在一个列表中,这个变量不可以是中间的变量,*第一个变量    *最后一个变量  这两种都行

tup5 =1,2,3,4,5

a,b,*c = tup

print('a = ',a)

print('b = ',b)

print('c = ',c)

a =  10

b =  20

c =  [30, 40]

二.可变对象

可变对象:

                id()         type()          value()

-->改对象里面的值,不改变变量指向的对象

a = [1,2,3]

print('修改前:',a,id(a))

a[0] =10

print('修改后:',a,id(a))

修改前: [1, 2, 3]2243795378696

修改后: [10, 2, 3]2243795378696


--> 改变量:修改id ,指向了不同的对象 

b = [1,2,3]

print('修改前:',b,id(b))

b = [4,5,6]

print('修改前:',b,id(b))

修改前: [1, 2, 3] 2343263167048

修改前: [4, 5, 6] 2343264392328

该变量:修改id ,指向了不同的对象

实例:

a = [1,2,3]

b = a    #此时ab指向相同的对象

b[0] =10  #修改对象里面的值,不改变对象id

print(a,id(a))

print(b,id(b))

 [10, 2, 3] 2188658106952

 [10, 2, 3] 2188658106952

a = [1,2,3]

b = a    #此时ab指向相同的对象

b = [10,2,3]    #修改变量b,此时对象改变了,ab指向不同的对象

print(a,id(a))

print(b,id(b))

 [1, 2, 3] 1753516414088

 [10, 2, 3] 1753515188808

三.字典的引入

-->字典:dict

字典是由键值对组成 key : value  key:一般使用字符串value : 可以使用任意类型

-->字典的创建

1.直接创建

d ={'name':'小黑','age':6,'color':'black'}

print(d,type(d))

{'name': '小黑', 'age': 6, 'color': 'black'}

2.通过dict函数创建字典

d = dict(name = '小黑',age = 6,color = 'black')

print(d,type(d))

{'name': '小黑', 'age': 6, 'color': 'black'}

-->dict函数可以将一个包含双值子序列转化为字典

注意:双值子序列:序列中有两个元素,每个元素也是序列

d = dict([('name','小黑'),('age',6)])

print(d,type(d))

{'name': '小黑', 'age': 6}

-->字典元素的获取

1.普通获取  get函数获取

d ={'name':'小黑','age':6,'color':'black'}

a = 'age'

b = 'sex'

print(d[a])

print(d[b])

6

KeyError: 'sex'

print(d.get('color'))         black

print(d.get('sex'))             None    

2.get(key,[default])函数也可以获取字典中的value

    -->如果key不存在,返回none

    -->default 也可以指定一个默认值,作为第二个参数,如果获取不到这个key,则返回默认值

print(d.get('name1','key不存在'))    //字典中没有name1这个key,显示默认值,不会报错

key不存在

四.字典的使用

字典的操作

-->修改

d ={'name':'小黑','age':6,'color':'black'}

# d['color'] = 'white'

# print(d['color'])  #white

-->增加

d ={'name':'小黑','age':6,'color':'black'}

d['sex'] = '未知'

print(d)

{'name': '小黑', 'age': 6, 'color': 'black', 'sex': '未知'}

d ={'name':'小黑','age':6,'color':'black'}

d.setdefault('name','小白')

print(d)

{'name': '小黑', 'age': 6, 'color': 'black'}        // 字典中含有这个key,不改变字典

d.setdefault('sex','white')

print(d)

{'name': '小黑', 'age': 6, 'color': 'black', 'sex': 'white'}        // 字典中没有这个key,即添加k-v


-->删除

    1.del  指定元素

d = {'a':1,'b':2,'c':3,'d':4}

del d['b']

print(d)

{'a': 1, 'c': 3, 'd': 4}

    2.popitem  随即删除一个k-v,有返回值

d = {'a':1,'b':2,'c':3,'d':4}

r = d.popitem()        //变量r用来接收返回值

print(d,r)

{'a': 1, 'c': 3} ('d', 4)

    3.pop()也是删除指定元素,但是返回值是对于元素的额value  注意返回值与popitem不同

d = {'a':1,'b':2,'c':3,'d':4}

res = d.pop('d')

re = d.pop('w')

print(d,res)        {'a': 1, 'b': 2, 'c': 3} 4

print(d,re)        KeyError: 'w'


    -->update

d1 = {'a':1,'b':2,'c':3,'d':4}

d2 = {'e':5,'f':6,'g':7}

d1.update(d2)

print(d1)

print(d2)

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7}

{'e': 5, 'f': 6, 'g': 7}

    -->clear()

d1 = {'a':1,'b':2,'c':3,'d':4}

print(d1)

{}

五.字典的简单案例

a = {'name':'123','data':{'result':[{'src':'python1'},{'src':'python2'},{'src':'python3'}]}}

i =0

while i <3:

    print(a['data']['result'][i]['src'],end='\t')

    i +=1

python1 python2 python3


lst1 = [11,22,33,44,55,66,77,88,99,90]

lst2 = []

lst3 = []

for iin lst1:

    if i <=66:

        lst2.append(i)

    else:

        lst3.append(i)

d = {'k1':lst2,'k2':lst3}

print(d)

{'k1': [11, 22, 33, 44, 55, 66], 'k2': [77, 88, 99, 90]}

你可能感兴趣的:(2020-11-09)