元组和字典
一.元组
1.与列表类似,区别在于:①元组用小括号()定义,②元组的元素不能修改
2.操作:①交换变量的值
②元组的方法 .count() 和 .index()
③元组切片 和列表切片一样
④拆包和装包:拆包的元素,整型、字符串、列表均可;装包时均为列表
1.基础
2.操作
①交换
②元组的方法 .count() 和 .index()
③元组切片
④拆包和装包
二.字典
1.基础
2.数据类型转换
3.增加元素
4.字典新增元素案例
5.取值
6.解封装 item(),values(), keys()
7.删除
1.与列表类似,区别在于:①元组用小括号()定义,②元组的元素不能修改
2.操作:①交换变量的值
②元组的方法 .count() 和 .index()
③元组切片 和列表切片一样
④拆包和装包:拆包的元素,整型、字符串、列表均可;装包时均为列表
1.基础
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
|
# list num_list = [ 1 , 2 , 3 , "4" ] # 元组 - tuple 与列表类似 # 区别:1.元组的元素不能修改 2.用()定义 tuple1 = () # 空元组 tuple2 = tuple () # 空元组 info_tuple = ( "张三" , 20 , 1.75 ) print ( type (tuple1), type (tuple2), type (info_tuple)) tuple3 = ( "Alex" ) # 不是元组,而是一个字符串,()表示调整优先级 print ( type (tuple3)) tuple4 = ( "Alex" ,) # 表示元组只有一个元素 |
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
# 元组元素不可变 # 需求:获得一个元组10个元素,每个元组都是1-10的随机数 import random list1 = [] for i in range ( 10 ): rand = random.randint( 1 , 20 ) list1.append(rand) print (list1, len (list1)) # 列表 转换成 元组,列表和元组可以互相转换 tuple1 = tuple (list1) # list1 = list(tuple1) print (tuple1) |
2.操作
①交换
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
# 交换变量 a = 1 b = 2 # 法 1: c = a a = b b = c # 法 2: a = a + b b = a - b a = a - b # 法 3: # (b, a) = (a, b) # 括号可以去掉 b, a = a, b print (a, b) |
②元组的方法 .count() 和 .index()
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
|
# 元组中的方法 index() 和 count() # index() 值->索引 # print(tuple1.index(1)) # count() 统计某个元素在元组中出现的次数 print (tuple1.count( 2 )) |
③元组切片
[Python] 纯文本查看 复制代码
1
2
|
# 通过元组切片 查看元素 print (tuple1[ 5 :]) |
④拆包和装包
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
# 整型 -> 列表 t1 = ( 2 , 5 , 6 , 7 , 9 , 6 , 3 ) a, * b, c = t1 # *b表示要拆包,它不固定长度 print (a) print ( * b) # type(*b)没有数据类型 print (c) # *b——>b 装包为一个列表 # 字符串 ->列表 x, y, * z = "hello" print (z) # 列表 -> 列表 x, y, * z = ( "niao" , "mao" , 8 , 'aa' , 'hello' ) print (z) |
二.字典
1.基础
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
# 字典 dict dict1 = {} # 空字典 dict2 = dict () # 空字典 print ( type (dict1), type (dict2)) tom = { "name" : "tom" , "age" : 18 , "height" : 180 , "weight" : 75.0 , "name" : 'TOM' } # 字典的元素是键值对 key: value # 键是唯一的,键必须是数字、字符或元组,值可以是任意类型 # 字典是无序的,索引就是键 # 字典的键必须是唯一的,如果定义字典的时候,有相同键的 键值对,则会保留 后面的 键值对 print (tom) # 通过键取值 print (tom[ 'age' ]) |
2.数据类型转换
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
# 列表 元组 字典 ————>字典 t1 = ( "name" , "tom" ) # 不能转成字典 list1 = [( "name" , "tom" ), ( "age" , 18 )] # 推荐:列表内元组转字典,里面的元组不会变,外面可以灵活 d1 = dict (list1) # [(a,b),(c,d)] a 和 c必须是数字、字符串或元组 print (d1) t2 = (( "name" , "tom" ), ( "age" , 18 )) # 过于不灵活:元组内元组 转字典 d2 = dict (t2) print (d2) t3 = ([ "name" , "tom" ], [ "age" , 18 ]) # 元组内列表 d3 = dict (t3) print (d3) l4 = [[ "name" , "tom" ],[ "age" , 18 ]] d4 = dict (l4) print (d4) |
3.增加元素
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
|
# 增:定义一个字典,通过增加键值对的形式,增加值 dict1 = {} dict1[ "device_type" ] = "cisco" print (dict1) # 改:对索引重新赋值 dict1[ "device_type" ] = "huawei" print (dict1) |
4.字典新增元素案例
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 用户注册功能 # 填写 username,password,email,phone 完成注册 data_base = [] while True : user_dict = {} user_dict[ 'username' ] = input ( "请输入用户名:" ) user_dict[ 'password' ] = input ( "请输入密码:" ) re_passwd = input ( "请再次输入密码" ) if re_passwd ! = user_dict[ 'password' ]: print ( "两次输入的密码不一致,请重新输入!" ) continue user_dict[ 'email' ] = input ( "请输入邮箱:" ) user_dict[ 'phone' ] = input ( "请输入手机号码:" ) data_base.append(user_dict) ask = input ( "是否继续注册?(Y/N)" ) if ask.upper() = = "N" : print ( "程序退出!" ) break print (data_base) |
5.取值
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
|
dict1 = { "张三" : 100 , "李四" : 100 , "王五" : 95 , "老六" : 88 } # 根据字典的键取值 print (dict1[ "张三" ]) for i in dict1: # i只是字典的键 if dict1[i] > 90 : print (i) |
6.解封装 item(),values(), keys()
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# items() values() keys() dict1 = { "张三" : 100 , "李四" : 100 , "王五" : 95 , "老六" : 88 } result1 = dict1.items() print (result1) print ( type (result1)) # items 类型可以转成列表, 与字典转列表不一样 list1 = list (result1) # 键和列表都留下 print (list1) list2 = list (dict1) # 只留下键 print (list2) # values 只留下值 result2 = dict1.values() print ( type (result2)) print (result2) list3 = list (result2) print (list3) # keys 只留下键 result3 = dict1.keys() print (result3) list4 = list (result3) print (list4) |
7.删除
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
# del 关键字 dict1 = { "张三" : 100 , "李四" : 100 , "王五" : 95 , " 老六" : 88 } del dict1[ '张三' ] print (dict1) # 也可以删整个字典 # del dict1 # pop() 要给键值才能删 dict1.pop( "李四" ) print (dict1) var = dict1.pop( "张三" , "这个键不存在" ) # 只是不会报错,这句话并不会显现 print (dict1) # 要想显现,用 var接收 print (var) # popitem 删字典键值对,后进先出 var1 = dict1.popitem() print (dict1) print (var1) |