Python元组、字典、集合简单介绍

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。元组和字符串都是是不可变序列.

语法:定义元组语法 () 和 ,

在这里插入图片描述

访问元组:和列表一样:a[1]

在这里插入图片描述

修改元组:Python中不允许修改元组的数据,包括不能删除其中的元素。

元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。但是,

如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变

在这里插入图片描述

tuple函数

tuple函数的功能与list函数基本上一样的,以一个序列作为参数并把它转换

为元组,如果参数是元组,那么该参数就会被原样返回。

在这里插入图片描述

多维列表/元祖访问 a[][]

元组的优点

与列表相比,元组的优点:

1.通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类

型。

2.由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。

3.元组可以用作字典的Key,而列表不行。因为字典的Key 必须是不可变的,

元组本身就是不可变的。

4.如果数据不需要更改,将其作为元组来实现,可以确保“写保护”。

字典

变量student为字典类型:

student= {‘name’:‘宋江’, ‘id’:100, ‘sex’:‘男’, ‘address’:‘中国’}

字典访问

student[‘key’]

在这里插入图片描述

➢ 访问不存在的键则会报错,解决方法:

➢ get()

使用get(‘key’)不存在不会报错,而且可以设置默认值

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置

默认值

在这里插入图片描述

字典的增删改查

添加元素

​ 如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,

那么就会新增这个元素

在这里插入图片描述

删除元素

​ 对字典进行删除操作,有一下几种

\1. del删除指定的元素

\2. del删除整个字典

\3. clear清空整个字典

\4. pop删除字典指定元素并且得到值

\5. popitem随机返回并删除字典中的一对键和值(项)第二部分 {默认会从最后一个开始删除}

修改元素

​ 字典的每个元素中的数据是可以修改的,只要通过key找到,即可修

在这里插入图片描述

查找元素

info = {‘name’:‘宋江’, ‘id’:100, ‘sex’:‘男生’, ‘address’:‘中国梁山’}

name = info.get(“name”)

print(“使用get(key)查找=”,name)

name = info[“name”]

print(“使用[key]=”,name)

if “name” in info:

print(“使用in根据key从字典中查找name是存在的”)

if “name” in info.keys():

print(“使用in根据key从字典中的info.keys()查找name是存在的”)

if “宋江” in info.values():

print(“使用in根据’值’从字典中的info.values()查找宋江是存在的”)

在这里插入图片描述

#字典的查看方式

info = {‘name’: ‘宋江’, ‘age’: 22, ‘sex’: ‘男’, ‘address’: ‘中国梁山’}

#1.通过Key

print(info[“name”])

#2.通过判断,某个Key是否存在于字典中

if “age” in info:

​ print(“使用in根据key从字典中查找age是存在的”)

if “name” in info.keys():

​ print(“使用in根据info.keys()从字典中查找name是存在的”)

if “宋江” in info.values():

print(“根据‘值’从字典中的info.values()查找宋江是存在的”)

字典的键值操作

len() 测量字典中,键值对的个数

keys 返回一个包含字典所有KEY的列表

values 返回一个包含字典所有value的列表

items 返回可遍历的(键, 值) 元组数组

has_key Python3中废弃了,这个方法是python 2.6以后支持的,但在python 3.0版本开始

将使用in.

dict.has_key(key)如果key在字典中,返回True,否则返回False

#遍历字典的key-value

infos = {'name': '宋江', 'age': 22, 'sex': '男', 'address': '中国梁山'}

\#('name': '宋江')

for a in infos.items():

    print("key={},values={}".format(a[0],a[1]))

 

print("="*50)

\#拆元组方式

for key,value in infos.items():

print("key={},values={}".format(key,value))

字典遍历

通过for … in …:的语法结构,我们可以遍历字符串、列表、元组、

字典等数据结构。

字符串遍历
a_str = "hello" 

for a in a_str: 

	print(a) 
列表遍历
a_list = ["刘备", 2, ["曹操","曹丕"], "孙权", 5] 

for a in a_list: 

	print(a,end=" ") 
    #没打印一个用空格符分开

	print("") 
    #换行打印
元组遍历
a_tuple = ("曹操", "刘备", 3, 4, 5) 

for a in a_tuple: 

	print(a,end=" ") 

	print("")
使用枚举遍历enumerate()

遍历列表引入enumerate

如果对一个列表,既要遍历索引又要遍历元素时,首

先可以这样写:

names = ["宋江","卢俊义","吴用"]

for i in range(len(names)):

    print("%d %s " % (i,names[i]))

 

for index,value in enumerate(names,2):

    print("%d %s " % (index,value))

 

print("="*50)

 
infos = {'name': '宋江', 'age': 22, 'sex': '男', 'address': '中国梁山'}

for index,value in enumerate(infos.values()):

	print("%d %s " % (index,value)) 

集合(set):

集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重

复的。

集合对象还支持联合(union), 交集(intersection),差集(difference)等数学运算。

​ 集合(set)、列表(list)、元组(tuple)相互转换:

x = set(“abcd”)有重复的值就是自动去重,会按照ASCII编码表排序

y = set(“djec”)

x&y求交集

x|y求并集

x-y求差集

在这里插入图片描述

在这里插入图片描述

引用

用id()来判断两个变量是否为同一个变量的引用

在Python中值是靠引用来传递的

我们可以用id()来判断两个变量是否为同一个变量的引用。

我们可以把id理解为那块内存的地址表示。

可变类型和不可变类型

不可变类型:字符串、数字、元组

可变类型:列表,字典

不可变类型不能修改值

可以变类型可以修改值

引用的应用-三种方式交换两个数

第一种方式:使用第三方变量

第二种方式:使用两个数和在减掉另外一个数

第三种方式:Python特有方式

#交换两个数,并且保证地址不变

#第一种方式:使用第三方变量实现交换

a=4

b=5

print("交换前:")

print(id(a))

print(id(b))

 

c = a

a = b

b = c

print("交换后:")

print(id(a))

print(id(b))

 

#第二种使用两个数和减掉另外一个数

a=4

b=5

print("交换前:")

print(id(a))

print(id(b))

 

a = a+b

b = a-b

a = a-b

 

print("交换前:")

print(id(a))

print(id(b))

 

 

#第三种,Python独有方式

a = 4

b = 5

print("交换前:")

print(id(a))

print(id(b))

a,b = b,a

print("交换后:")

print(id(a))

print(id(b))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值