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

本文探讨了Python中元组的不可变特性,与列表的区别,以及元组在性能上的优势。同时介绍了字典的键值操作、增删改查和访问技巧,以及如何使用get方法避免键错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

元组

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))
### Python元组字典集合的使用方法及区别 #### 1. 元组 (Tuple) 元组是一种不可变的数据结构,一旦创建就不能修改其内容。它可以通过小括号 `()` 来定义,也可以仅通过逗号 `,` 分隔多个值来隐式创建[^3]。 以下是元组的一些基本操作: ```python tup = (1, 2, 3, 4) # 显式使用小括号定义元组 tup_implicit = 1, 2, 3, 4 # 隐式定义元组 print(type(tup)) # 输出:<class 'tuple'> print(type(tup_implicit)) # 输出:<class 'tuple'> # 访问元组中的元素 element = tup[0] # 获取第一个元素 ``` 由于元组是不可变的,因此无法对其执行诸如添加、删除或更改元素的操作。这种特性使得元组适合用来存储固定不变的数据集。 --- #### 2. 字典 (Dictionary) 字典是一种可变的键-值对数据结构,支持动态增删改查操作。字典的特点在于它的键必须唯一且不可变(通常是字符串、数字或元组),而值可以是任意类型的对象[^1]。 下面是字典的基本用法: ```python dict_one = {'name': 'Alice', 'age': 25} # 使用大括号 {} 定义字典 print(dict_one['name']) # 返回对应 key 的 value 值 # 添加新键值对 dict_one['city'] = 'New York' # 修改已有键的值 dict_one['age'] = 26 # 删除某个键值对 del dict_one['city'] try: print(dict_one['nonexistent_key']) # 尝试访问不存在的键会引发 KeyError except KeyError as e: print(f"KeyError: {e}") ``` 需要注意的是,在尝试获取一个不存在的键时,程序将会抛出 `KeyError` 异常[^4]。 --- #### 3. 集合 (Set) 集合是一个无序且不重复的元素集合,适用于去重场景或者进行数学上的交并差运算。集合可以用花括号 `{}` 或者内置函数 `set()` 创建。 以下是一些常见的集合操作: ```python set_one = {1, 2, 3, 4} set_two = set([3, 4, 5, 6]) # 使用 list 初始化集合 # 并集 union_set = set_one | set_two # 结果为 {1, 2, 3, 4, 5, 6} # 交集 intersection_set = set_one & set_two # 结果为 {3, 4} # 差集 difference_set = set_one - set_two # 结果为 {1, 2} # 判断子集关系 is_subset = set_two >= intersection_set # True 表示 intersection_set 是 set_two 的子集 ``` 集合的一个重要特点是自动去除重复项,这使其非常适合处理需要保持唯一性的数据。 --- #### 区别总结 | 特性 | 元组 (Tuple) | 字典 (Dictionary) | 集合 (Set) | |--------------|-----------------------|-------------------------|----------------------| | **可变性** | 不可变 | 可变 | 可变 | | **有序性** | 有序 | 键值对无序 | 无序 | | **用途** | 存储固定数据序列 | 快速查找映射关系 | 数据去重与集合运算 | | **定义方式** | `(item1, item2)` | `{'key1': val1, ...}` | `{item1, item2}` | ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值