Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

news/2024/7/4 9:33:20

Recipe 1.1. Processing a String One Character at a Time
Recipe 1.1. 逐个处理字符串中的各个字符

Credit: Luther Blissett


[问题]

您想逐个处理字符串中的各个字符。


[解法]

您可以构建一个列表,其中每个元素存放一个字符串中的字符(由于 Python 中没有用来表示单个“字符”的类型,因此列表的每个元素都是一个长度为1的字符串)。以字符串作为参数,调用内建的 list 即可:

thelist = list(thestring)

您甚至连 list 都不需要构建,因为您可以通过 for 语句,直接对字符串进行循环存取:

for c in thestring:
    do_something_with(c)

或者通过 list comprehension 来达到同样的效果:

results = [do_something_with(c) for c in thestring]

您还可以调用内建的 map 函数来达到同样的效果。将要对每个字符所做的处理归纳为函数,然后将字符串以及处理函数作为参数传递给 map 即可:

results = map(do_something, thestring)


[讨论]

Python 中的单个字符用长度为 1 的字符串来表示。您可以通过循环,逐个访问字符串中的每个字符。若您对每个字符的处理可以归纳为函数调用,您也可以使用 map 来完成。您还可以调用内建的 list 来将字符串的各个字符作为列表元素存放到列表当中。若您希望得到的是集合,其中的元素就是字符串的各个字符,您可以利用 sets 模块来完成,将字符串作为参数来构建一个 Set 即可(在 Python 2.4 中您可以调用内建的 set ,用法同旧版本中的 sets 模块):

import sets
magic_chars = sets.Set('abracadabra')
poppins_chars = sets.Set('supercalifragilisticexpialidocious')
print ''.join(magic_chars & poppins_chars)   # 求交集

运行结果为:

acrd


[请参见]

Library Reference 中关于 sequences(序列)的章节;Perl Cookbook Recipe 1.5 。





http://www.niftyadmin.cn/n/3651738.html

相关文章

整数反转 leetcode java篇

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 class Solution {public …

Python Cookbook 第二版 汉化版 [00-2-Preface] Part 1

序言本书并非典型的 OReilly 图书。典型的 OReilly 图书是由一两位作者写就的完整文稿;而本书则不然,本书是一种新的“将开源软件开发原则应用于图书创作”的大胆尝试。Python 社区的300多位成员为本书内容作出了贡献。在本序言中,我们&#…

有效的括号 leetcode java篇

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 class Solution {public boolean isVa…

ruoyi若依 组织架构设计--[ 部门管理 ]

ruoyi若依 组织架构设计--[ 部门管理 ] 部门管理部门查询部门新增部门修改部门删除 部门管理 部门查询 需要注意的是,部门管理也有数据权限,比如A用户分配的数据权限(通过角色分配)是深圳总公司,那么A用户登录后看到的部门也是深圳总公司&am…

在排序数组中查找元素的第一个和最后一个位置 java篇 leetcode

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗&#xff1…

Python Cookbook 第二版 汉化版 [00-2-Preface] Part 2

0.5 Organization0.5 本书的组织本书共 20 章。每一章专门讨论某一类型的 recipe ,比如算法、文本处理、数据库等。本书第一版仅 17 章。自第一版以来,Python 在语言设施和程序库两方面有了进步,Python 社区也在 cookbook 网站上新贴了大量的…

删除有序数组中的重复项 leetcode java篇

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分…

懒人的Python技巧#20060706

很多工作经常是在同时打开了N个窗口,搞不好还开着Photoshop和/或Illustrator的情况下进行。如此负荷,再快的电脑也照给“沙漏”。然而即使是在这样的情形之下,还经常会遇到“希望把Word文档转为文本文件”的需求——这大约是Word的滥用和优秀…