Python3_【tuple】元组and【set】集合

本文深入探讨了Python中元组和集合的基本概念与用法,包括元组的创建、访问、修改及删除,集合的定义及其在数据去重方面的应用。通过实例展示了元组与集合的特点与区别。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Author: zhaosj

###Python 基础元组和集合###
#在爬虫中,元组和集合很少使用.元素类似于列表,但是元组的元素不能进行修改只能查看

#元组格式
#tuple = (1,2,3)

#集合的概念类似于数学中的集合,每个集合中的元素是无序的,本可以有重复的对象,因为可以通过集合把重复数据去除

list = ['ILen','zhaosj','ILen']
set = set(list)

print(set)

#执行结果:

python2

python3

Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

创建空元组:

tup1 = ();

访问元组

元组可以使用下标索引来访问元组中的值,如下实例:

#!/usr/bin/python3

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

#!/usr/bin/python3

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3)

删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

#!/usr/bin/python3

tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
del tup;
print ("删除后的元组 tup : ")
print (tup)

元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

元组索引,截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

元组:

L = ('Google', 'Taobao', 'Runoob')

元组内置函数
Python元组包含了以下内置函数

 

<think> 我们被要求解释Python中List列表型、Tuple元组型、Set集合型和Dictionary字典型的区别与联系。根据提供的引用,我们可以总结如下: 1. 列表(List):有序的可变序列,可以包含不同类型的元素,用方括号`[]`表示。支持增删改查等操作。 2. 元组Tuple):有序的不可变序列,用圆括号`()`表示。创建后不能修改,所以没有增加、删除、修改元素的方法。 3. 集合Set):无序且不重复元素的集合,用花括号`{}`或`set()`函数创建。集合主要用于成员检测、消除重复元素等。 4. 字典(Dictionary):无序的键值对集合,键必须是不可变类型(如字符串、数字或元组),值可以是任意类型。用花括号`{}`表示,键值对用冒号`:`分隔。 区别与联系: 区别: - 有序性:列表和元组是有序的(可以通过索引访问),而集合和字典是无序的(Python3.6+字典开始保持插入顺序,但通常仍视为无序)。 - 可变性:列表、集合、字典是可变的(可以增删改元素),元组是不可变的。 - 元素要求:集合中的元素必须是可哈希的(不可变类型),且不允许重复;字典的键必须是可哈希的,值可以是任意类型。 - 存储方式:列表和元组通过索引访问,集合通过元素本身(没有索引),字典通过键访问值。 联系: - 列表、元组集合、字典都是容器类型,可以存储多个元素。 - 列表和元组可以相互转换(但注意元组不可变,转换后不可修改)。 - 集合和字典都使用哈希表实现,因此查找速度很快。 - 字典的键和集合的元素都必须是不可变的,因此元组可以作为字典的键或集合的元素(只要元组内的元素都是不可变的),而列表则不行。 下面我们详细展开说明。 </think> ### Python中List列表型、Tuple元组型、Set集合型、Dictionary字典型的区别与联系 以下是四种数据结构的核心对比(基于Python 3.8+): | 特性 | 列表(List) | 元组Tuple) | 集合Set) | 字典(Dict) | |------|--------------|---------------|-------------|--------------| | **定义符号** | `[ ]` | `( )` | `{ }` 或 `set()` | `{ }` | | **可变性** | ✔️ 可变 | ❌ 不可变 | ✔️ 可变 | ✔️ 值可变<br>键不可变 | | **有序性** | ✔️ 有序<br>元素顺序固定 | ✔️ 有序<br>元素顺序固定 | ❌ 无序<br>元素随机排列 | ❌ 无序<br>键值对随机排列(Python 3.7+有序) | | **重复元素** | ✔️ 允许重复 | ✔️ 允许重复 | ❌ 自动去重 | ❌ 键唯一<br>值可重复 | | **访问方式** | 索引(`list[0]`) | 索引(`tuple[0]`) | 无法索引<br>只能遍历 | 键访问(`dict[key]`) | | **典型操作** | `append()`, `pop()` | `count()`, `index()` | `add()`, `union()` | `get()`, `keys()` | | **哈希性** | ❌ 不可哈希 | ✔️ 可哈希 | ✔️ 可哈希 | ✔️ 键可哈希 | | **内存开销** | 较高 | 较低 | 中等 | 最高 | #### 核心区别详解: 1. **可变性差异** - List元素可修改:`list[0] = new_value` - Tuple创建后不可修改,适合存储常量数据(如坐标) - Set元素可增删:`set.add(item)` - Dict键不可变(需可哈希类型),值可修改:`dict[key] = new_value` 2. **有序性表现** List和Tuple保持插入顺序: ```python list1 = [1, 2]; list1.append(3) # 始终保持 [1,2,3] ``` Set和Dict无序(Python 3.7+ Dict保留插入顺序): ```python set1 = {3, 1, 2} # 实际存储顺序不确定 ``` 3. **重复值处理** ```python list_dup = [1,1,2] # 允许重复 → [1,1,2] set_dup = {1,1,2} # 自动去重 → {1,2} ``` 4. **性能对比** - **查找效率**:Set和Dict使用哈希表,$O(1)$ 查找;List/Tuple需遍历,$O(n)$ - **内存占用**:Dict > List > Set > Tuple #### 相互转换关系: | 转换类型 | 方法 | 约束条件 | |----------|------|----------| | List → Tuple | `tuple(list)` | 无 | | TupleSet | `set(tuple)` | 元素需可哈希 | | Set → List | `list(set)` | 丢失顺序 | | Dict → List | `list(dict.keys())` | 仅保留键 | #### 典型应用场景: 1. **List**:需修改的有序序列(如日志记录) 2. **Tuple**:不可变数据(如数据库查询结果) 3. **Set**:去重/集合运算(如用户标签) 4. **Dict**:键值映射(如JSON数据处理) > 示例:数据去重的高效方案 > ```python > data = [1,5,2,5,1] # 原始数据 > unique_set = set(data) # 快速去重 → {1,2,5} > unique_list = list(unique_set) # 转回列表 → [1,2,5](无序) > ``` #### 特殊联系: - **嵌套关系**:List/Tuple可包含Dict/Set,但Dict的键和Set元素必须是可哈希类型(如Tuple/字符串) - **迭代通用性**:四者均支持`for item in container`迭代 - **推导式支持**:均可使用推导式创建(如`{x**2 for x in range(5)}`)[^1][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值