《Think Python》第8章学习笔记
- 8.1 字符串是一个序列(A string is a sequence)
- 8.2 len
- 8.3 用一个 for 循环进行遍历(Traversal with a for loop)
- 8.4 字符串切片(String slices)
- 8.5 字符串是不可变的(Strings are immutable)
- 8.6 搜索(Searching)
- 8.7 循环和计数(Looping and counting)
- 8.8 字符串方法(String methods)
- 8.9 in 运算符(The in operator)
- 8.10 字符串比较(String comparison)
- 8.11 调试(Debugging)
8.1 字符串是一个序列(A string is a sequence)
字符串是一个字符序列。可以使用中括号运算符 []
一次从字符串中读取一个字符,中括号中的表达式称为索引(index),用于指示序列中你想要字符的位置。值得注意的是,索引指的是从字符串起始位置开始的偏移(offset),因此第一字母的偏移为 0。
8.2 len
len
是 Python 中的内建函数,返回字符串中字符的数目。
>>> fruit = 'banana'
>>> len(fruit)
6
对于字符串,Python 也提供了负向的索引,方便从字符串的末尾开始计数。
>>> fruit = 'banana'
>>> last = fruit[-1]
>>> last
'a'
8.3 用一个 for
循环进行遍历(Traversal with a for
loop)
在 Python 中,可以使用 while
语句和 for
循环对字符串进行遍历。
# while statement
fruit = 'banana'
i = 0
while i < len(fruit):
print(fruit[i])
i = i + 1
# for loop
fruit = 'banana'
for letter in fruit:
print(letter)
8.4 字符串切片(String slices)
字符串的一个片段(segment)称为一个切片(slice)。运算符 [n:m]
返回字符串从第 n
个字符到第 m
个字符的部分,但是只包括起始索引 n
,不包括结束索引 m
。
如果省略第一个索引,切片将从字符串的起始位置开始;如果省略第二个索引,切片将一直到字符串的结束位置。
>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ana'
如果第一索引的值大于等于第二个,那么结果将是空字符串(empty string)。
>>> fruit = 'banana'
>>> fruit[3:3]
''
如果第一个索引和第二个索引都省略,那么将返回该字符串。
>>> fruit = 'banana'
>>> fruit[:]
'banana'
8.5 字符串是不可变的(Strings are immutable)
字符串是不可变的(immutable),意味着我们无法改变一个已经存在的字符串。“改变”一个字符串的方式只能是从新生成一个字符串。
8.6 搜索(Searching)
无
8.7 循环和计数(Looping and counting)
无
8.8 字符串方法(String methods)
字符串类型( str
类)提供了许多有用的方法,通过点运算符 .
进行调用,常用的方法有:
upper()
和lower()
find(...)
8.9 in
运算符(The in
operator)
in
运算符是一种布尔运算符,输入两个字符串,当第一个字符串是第二个字符串的字串时,返回 True
。
>>> 'a' in 'banana'
True
8.10 字符串比较(String comparison)
关系运算符(>
、<
和 ==
)在字符串上也是起作用的。与 Java 中不同,Python 用 ==
比较两个字符串是否相等。
>>> 'abc' == 'banana'
False
>>> 'abc' == 'abc'
True
关系运算符(>
和 <
)能够用于对字符串按照字母顺序进行排序。
>>> 'abc' < 'banana'
True
>>> 'cat' > 'banana'
True
需要注意的是,在 Python 中,所有的大写字母顺序都是排在小写字母前面的。
>>> 'Pipeapple' > 'banana'
False
因此,在进行字符串比较前,最好将所有的字符串转换成标准的格式,比如:小写。
8.11 调试(Debugging)
无
《Think Python》第8章学习笔记的更多相关文章
- 利用Python进行数据分析 第4章 IPython的安装与使用简述
本篇开始,结合前面所学的Python基础,开始进行实战学习.学习书目为<利用Python进行数据分析>韦斯-麦金尼 著. 之前跳过本书的前述基础部分(因为跟之前所学的<Python基 ...
- 利用python进行数据分析--(阅读笔记一)
以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分 ...
- 利用Python进行数据分析 第7章 数据清洗和准备(2)
7.3 字符串操作 pandas加强了Python的字符串和文本处理功能,使得能够对整组数据应用字符串表达式和正则表达式,且能够处理烦人的缺失数据. 7.3.1 字符串对象方法 对于许多字符串处理和脚 ...
- 利用Python进行数据分析 第6章 数据加载、存储与文件格式(2)
6.2 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一,是使用Python内置的pickle序列化. pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle ...
- 利用Python进行数据分析 第4章 NumPy基础-数组与向量化计算(3)
4.2 通用函数:快速的元素级数组函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数. 1)一元(unary)ufunc,如,sqrt和exp函数 2)二元(unary) ...
- 利用Python进行数据分析 第8章 数据规整:聚合、合并和重塑.md
学习时间:2019/11/03 周日晚上23点半开始,计划1110学完 学习目标:Page218-249,共32页:目标6天学完(按每页20min.每天1小时/每天3页,需10天) 实际反馈:实际XX ...
- 利用Python进行数据分析 第7章 数据清洗和准备(1)
学习时间:2019/10/25 周五晚上22点半开始. 学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完. 实际反馈:集中学习1.5小时,学习6页:集中学习 ...
- 利用Python进行数据分析 第5章 pandas入门(2)
5.2 基本功能 (1)重新索引 - 方法reindex 方法reindex是pandas对象地一个重要方法,其作用是:创建一个新对象,它地数据符合新地索引. 如,对下面的Series数据按新索引进行 ...
- 利用Python进行数据分析 第5章 pandas入门(1)
pandas库,含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具.pandas是基于NumPy数组构建. pandas常结合数值计算工具NumPy和SciPy.分析库statsmodels和 ...
- 《Python自然语言处理》第二章 学习笔记
import nltk from nltk.book import * nltk.corpus.gutenberg.fileids() emma = nltk.corpus.gutenberg.wor ...
随机推荐
- SQL datediff()函数 时间差
定义和用法 DATEDIFF() 函数返回两个日期之间的天数. 语法 DATEDIFF(datepart,startdate,enddate) startdate 和 enddate 参数是合法的日期 ...
- B - 영어(字符串)
原题链接 B - 영어 Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submit S ...
- iOS仿UC浏览器顶部频道滚动效果
很喜欢用UC浏览器上网,当然不是给UC打广告,里面有很多酷炫的效果,值的学习,这次分享的是频道滚动的效果.动画效果如下: 实现的这个效果的关键是绘制,重写顶部Label的drawRect方法 gith ...
- Nginx + uWSGI 配置django---终极版
好开森,配置了差不多一天的项目,终于成功了,写一篇博客庆祝一下 我们先来了解下nginx与uwsgi的概念,再去配置 磨刀不误砍柴工. nginx 是一个开源的高性能的 HTTP 服务器和反向代理:1 ...
- Prufer codes与Generalized Cayley's Formula学习笔记
\(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...
- Java8新特性学习笔记(一) Lambda表达式
没有用Lambda表达式的写法: Comparator<Transaction> byYear = new Comparator<Transaction>() { @Overr ...
- K:java中的安全模型(沙箱机制)
本博文整合自:Java安全--理解Java沙箱.Java 安全模型介绍.Java的沙箱机制原理入门 相关介绍: 我们都知道,程序员编写一个Java程序,默认的情况下可以访问该机器的任意资源,比如读取 ...
- HDU-1087-Super Jumping! Jumping! Jumping!(线性DP, 最大上升子列和)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- leetcode-884-两句话中的不常见单词
题目描述: 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回 ...
- knova绘制进度条
效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...