一.元组
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)
|