活动介绍

Python集合操作与作用域详解

立即解锁
发布时间: 2025-08-16 02:13:08 阅读量: 18 订阅数: 30
PDF

Python编程实践:从入门到精通

### Python集合操作与作用域详解 #### 1. 集合的其他方法 集合除了常见的操作外,还有一些其他实用的方法: - `add(element)`:将元素添加到集合中。如果元素已经存在于集合中,则不会产生任何效果(集合中的元素是唯一的)。该方法会修改集合,没有返回值。 - `clear()`:移除集合中的所有元素,使集合为空。 - `remove(element)` 和 `discard(element)`:这两个方法都用于移除集合中存在的元素。区别在于,如果要移除的元素不在集合中,`remove` 会引发错误,而 `discard` 不会。这两个方法都没有返回值。 - `copy()`:返回集合的浅拷贝。 #### 2. 集合的应用 集合有许多应用场景,主要可以分为以下两类: - **查找唯一元素**:可以很方便地找出列表、文件等中的唯一元素。只需将每个元素添加到集合中,集合会自动处理重复元素。 - **使用集合运算符查找元素的各种组合**:通过集合的并集、交集、差集等操作,可以得到不同元素的组合。 #### 3. 不同文档单词关系分析 下面以《葛底斯堡演说》和《独立宣言》为例,比较两个文档中使用的单词,以了解文档之间的关系。 ##### 3.1 可复用的函数及修改说明 - **add_word**:将每个单词添加到集合中,参数为单词和集合,无返回值。此函数需要根据集合的特点进行修改,使用 `add` 方法。 ```python def add_word(word, word_set): '''Add the word to the set. No word smaller than length 3.''' if len(word) > 3: word_set.add(word) ``` - **process_line**:处理一行文本,去除各种字符,分割出单词等。参数为一行文本和集合,会调用 `add_word` 处理每个处理后的单词,无返回值。该函数可以直接使用,虽然参数名称在当前上下文中不太合适,但代码功能正常。 ```python import string def process_line(line, word_set): ''' Process the line to get lowercase words to be added to the set.''' line = line.strip() word_list = line.split() for word in word_list: if word != '--': word = word.strip() word = word.strip(string.punctuation) word = word.lower() add_word(word, word_set) ``` - **pretty_print**:参数为两个文件的集合,无返回值。由于输出要求不同,该函数需要重新编写。 ```python def pretty_print(ga_set, doi_set): # print some stats about the two sets print('Count of unique words of length 4 or greater') print('Gettysburg Addr: {}, Decl of Ind: {}\n'.format(len(ga_set),len(doi_set))) print('{:15s} {:15s}'.format('Operation', 'Count')) print('-'*35) print('{:15s} {:15d}'.format('Union', len(ga_set.union(doi_set)))) print('{:15s} {:15d}'.format('Intersection', len(ga_set.intersection(doi_set)))) print('{:15s} {:15d}'.format('Sym Diff', len(ga_set.symmetric_difference(doi_set)))) print('{:15s} {:15d}'.format('GA-DoI', len(ga_set.difference(doi_set)))) print('{:15s} {:15d}'.format('DoI-GA', len(doi_set.difference(ga_set)))) # list the intersection words, 5 to a line, alphabetical order intersection_set = ga_set.intersection(doi_set) word_list = list(intersection_set) word_list.sort() print('\n Common words to both') print('-'*20) count = 0 for w in word_list: if count % 5 == 0: print() print('{:13s}'.format(w), end=' ') count += 1 ``` - **main**:作为主程序,打开两个文件,为每个文件创建一个集合,使用 `process_line` 处理文件的每一行。处理完两个集合后,调用 `pretty_print` 输出信息。该函数需要进行一些小的修改。 ```python def main(): ''' Compare the Gettysburg Address and the Declaration of Independence.''' gettysburg_address_set = set() declaration_of_independence_set = set() gettysburg_file = open('gettysburg.txt') declaration_independence_file = open('declOfInd.txt') for line in gettysburg_file: process_line(line, gettysburg_address_set) for line in declaration_independence_file: process_line(line,declaration_of_independence_set) pretty_print(gettysburg_address_set, declaration_of_independence_set) ``` ##### 3.2 输出及分析 运行 `main()` 函数后,输出结果如下: ```plaintext Count of unique words of length 4 or greater Gettysburg Addr: 100, Decl of Ind: 487 Operation Count ----------------------------------- Union 556 Intersection 31 Sym Diff 525 GA-DoI 69 DoI-GA 456 Common words to both -------------------- cause civil created earth equal from full government great have here liberty lives long nation people power remaining shall should that their these they this those thus under which will world ``` 可以验证这些数字是合理的: - 两个集合的元素总数为 587,但交
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

下一代网络中滞后信令负载控制建模与SIP定位算法解析

### 下一代网络中滞后信令负载控制建模与SIP定位算法解析 #### 1. 滞后负载控制概率模型 在网络负载控制中,滞后负载控制是一种重要的策略。以两级滞后控制为例,系统状态用三元组 $(h, r, n) \in X$ 表示,其中所有状态集合 $X$ 可划分为 $X = X_0 \cup X_1 \cup X_2$。具体如下: - $X_0$ 为正常负载状态集合:$X_0 = \{(h, r, n) : h = 0, r = 0, 0 \leq n < H_1\}$。 - $X_1$ 为一级拥塞状态集合:$X_1 = X_{11} \cup X_{12} = \{(h, r, n) : h

智能城市中的交通管理与道路问题报告

### 智能城市中的交通管理与道路问题报告 #### 1. 交通拥堵检测与MAPE - K循环规划步骤 在城市交通管理中,交通拥堵检测至关重要。可以通过如下SQL语句检测十字路口的交通拥堵情况: ```sql insert into CrossroadTrafficJams select * from CrossroadCarsNumber (numberOfCars > TRAFFIC JAM THRESHOLD) ``` 此语句用于将十字路口汽车数量超过交通拥堵阈值的相关信息插入到`CrossroadTrafficJams`表中。 而在解决交通问题的方案里,MAPE - K循环的规划步

嵌入式系统应用映射与优化全解析

### 嵌入式系统应用映射与优化全解析 #### 1. 应用映射算法 在异构多处理器环境下,应用映射是将任务合理分配到处理器上的关键过程。常见的算法有 HEFT 和 CPOP 等。 CPOP 算法的具体步骤如下: 1. 将计算和通信成本设置为平均值。 2. 计算所有任务的向上排名 `ranku(τi)` 和向下排名 `rankd(τi)`。 3. 计算所有任务的优先级 `priority(τi) = rankd(τi) + ranku(τi)`。 4. 计算关键路径的长度 `|CP | = priority(τentry)`。 5. 初始化关键路径任务集合 `SETCP = {τentry

排序创建与聚合技术解析

### 排序创建与聚合技术解析 #### 1. 排序创建方法概述 排序创建在众多领域都有着广泛应用,不同的排序方法各具特点和适用场景。 ##### 1.1 ListNet方法 ListNet测试的复杂度可能与逐点和逐对方法相同,因为都使用评分函数来定义假设。然而,ListNet训练的复杂度要高得多,其训练复杂度是m的指数级,因为每个查询q的K - L散度损失需要添加m阶乘项。为解决此问题,引入了基于Plackett - Luce的前k模型的K - L散度损失的前k版本,可将复杂度从指数级降低到多项式级。 ##### 1.2 地图搜索中的排序模型 地图搜索通常可分为两个子领域,分别处理地理

大新闻媒体数据的情感分析

# 大新闻媒体数据的情感分析 ## 1. 引言 情感分析(又称意见挖掘)旨在发现公众对其他实体的意见和情感。近年来,随着网络上公众意见、评论和留言数量的激增,通过互联网获取这些数据的成本却在降低。因此,情感分析不仅成为了一个活跃的研究领域,还被众多组织和企业广泛应用以获取经济利益。 传统的意见挖掘方法通常将任务分解为一系列子任务,先提取事实或情感项目,然后将情感分析任务视为监督学习问题(如文本分类)或无监督学习问题。为了提高意见挖掘系统的性能,通常会使用辅助意见词典和一系列手动编码的规则。 在基于传统机器学习的意见挖掘问题中,构建特征向量是核心。不过,传统的词嵌入方法(如 GloVe、C

物联网智能植物监测与雾计算技术研究

### 物联网智能植物监测与雾计算技术研究 #### 1. 物联网智能植物监测系统 在当今科技飞速发展的时代,物联网技术在各个领域的应用越来越广泛,其中智能植物监测系统就是一个典型的例子。 ##### 1.1 相关研究综述 - **基于物联网的自动化植物浇水系统**:该系统能确保植物在需要时以适当的量定期浇水。通过土壤湿度传感器检查土壤湿度,当湿度低于一定限度时,向水泵发送信号开始抽水,并设置浇水时长。例如,在一些小型家庭花园中,这种系统可以根据土壤湿度自动为植物浇水,节省了人工操作的时间和精力。 - **利用蓝牙通信的土壤监测系统**:土壤湿度传感器利用土壤湿度与土壤电阻的反比关系工作。

物联网技术与应用:从基础到实践的全面解读

# 物联网相关技术与应用全面解析 ## 1. 物联网基础技术 ### 1.1 通信技术 物联网的通信技术涵盖了多个方面,包括短距离通信和长距离通信。 - **短距离通信**:如蓝牙(BT)、蓝牙低功耗(BLE)、ZigBee、Z - Wave等。其中,蓝牙4.2和BLE在低功耗设备中应用广泛,BLE具有低功耗、低成本等优点,适用于可穿戴设备等。ZigBee是一种无线协议,常用于智能家居和工业控制等领域,其网络组件包括协调器、路由器和终端设备。 - **长距离通信**:如LoRaWAN、蜂窝网络等。LoRaWAN是一种长距离广域网技术,具有低功耗、远距离传输的特点,适用于物联网设备的大规模

硬核谓词与视觉密码学中的随机性研究

# 硬核谓词与视觉密码学中的随机性研究 ## 一、硬核谓词相关内容 ### 1.1 一个声明及证明 有声明指出,如果\(\max(|\beta|, |\beta'|) < \gamma n^{1 - \epsilon}\),那么\(\text{Exp}[\chi_{\beta \oplus \beta'}(y)Z(\alpha, J(y))] \leq \gamma \delta_{\beta, \beta'}\)。从这个声明和另一个条件(3)可以得出\(\text{Pr}[|h(x, y)| \geq \lambda] \leq \lambda^{-2} \sum_{|\alpha| +

MicroPython项目资源与社区分享指南

# MicroPython项目资源与社区分享指南 ## 1. 项目资源网站 在探索MicroPython项目时,有几个非常有用的资源网站可以帮助你找到更多的示例项目和学习资料。 ### 1.1 Hackster.io 在Hackster.io网站上,从项目概述页面向下滚动,你可以找到展示如何连接硬件的部分(就像书中介绍项目那样)、代码的简要说明,以及如何使用该项目的描述和演示。有些示例还包含短视频来展示或解释项目。页面底部有评论区,你可以在这里查看其他人对项目的评价和提出的问题。如果你在某个示例上遇到困难,一定要阅读所有评论,很有可能有人已经问过相同的问题或解决了该问题。 ### 1.2

请你提供书中第28章的具体内容,以便我按照要求为你创作博客。

请你提供书中第28章的具体内容,以便我按照要求为你创作博客。 请你先提供书中第28章的具体英文内容,这样我才能生成博客的上半部分和下半部分。