Python第五章-内置数据结构01-字符串
Python 内置的数据结构
到目前为止,我们如果想保存一些数据,只能通过变量。但是如果遇到较多的数据要保存,这个时候时候用变量就变的不太现实。
我们需要能够保存大量数据的类似变量的东东,这种东东就是数据结构(Data Structures)。
数据结构,它们只是一种结构,能够将一些数据聚合在一起的结构。换句话说,它们是用来存储一系列相关数据的集合。
python 提供了 4 种内置数据结构:List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)
严格来说,字符串也是一种数据结构,因为他把字符组织在了一起。
所以,本章先从字符串开始讲起。
一、字符串
1.1 字符串的定义
字符串就是一串字符,是编程语言中表示文本的数据类型
在Python中可以使用 一对双引号或者一对单引号定义一个字符串
虽然可以使用
\"或\'做字符串的转移,但是实际开发中
- 如果字符串内容需要使用
",可以使用'定义字符串- 如果字符串内容需要使用
',可以使用"定义字符串
str1 = "hello python"
str2 = "你是'王二狗'么"
str3 = '你是"李小花"么'
print(str1)
print(str2)
print(str3)
1.2 连接和重复
在前面的学习中我们已接近了解了什么是字符串,字符串的连接,输出等。下面我们开始学习字符串更高级的功能。
+ 用来连接两个字符串
* 用来重复字符串
上面两个操作符可以都可以操作变量。
a = "你好"
b = a + "world"
c = b * 3
print(b)
print(c)
如果两个或多个字符串字面量写在一起,则他们会自动的连接在一起。
d = "a" "b""c" "你好"
print(d) # abc你好
注意:
- 只都是字符串字面量才可以通过这种方法连接,变量不能参与
- 字符串之间不要添加任何标点符号
- 如果想要打破比较长的字符串,这种方式尤其有用。
text = ("窗前明月光"
"疑是地上霜"
"举头望明月"
"低头思故乡")
print(text)

1.3 获取字符串长度
字符串的长度,就是指的字符串中字符的个数。使用内置函数 len() 来获取字符串长度。 len() 可以获取任何序列的长度,后面我们会了解更多。
s = "hello world"
print(len(s)) # 11
1.4 字符串索引(index)
字符串中的每个字符都有一个编号,这个编号在编程语言中一般称之为索引(index、下标)。可以通过索引单独去访问字符串中的每个字符。
另外,由于 python 中没有字符类型,所以即使拿到的是单个字符也是字符串类型的。
index 是从 0 开始,最后一个字符的索引:字符串长度 - 1
s = "hello world"
print(s[0])
print(s[3])
print(s[len(s) - 1])

索引也可以是负值,表示从右开始计算。-1 就是最后一个元素的索引。 -0 和 0 是一样的。
s = "hello world"
print(s[-1])
print(s[-2])
print(s[-len(s)])
如果 index 超出了范围,则会抛出异常。所以使用的时候一定要小心,防止下标越界。
s = "hello world"
print(s[len(s)])

1.5 字符串切片(slice)
使用 index 只能获取单个的字符。而字符串的切片操作可以获取子字符串。
python 的切片操作非常的优雅!如果你使用过别的语言,就知道我为什么这么说了。
s = "life is short, use python"
print(s[0:4]) # 获取下标为 0(包括) 到下标为 4(不包括) 的子字符串 "life"
print(s[2:3]) # "f"
print(s[2:]) # fe is short, use python
print(s[:4]) # life
print(s[-2:]) # on
注意:
- 切片的时候,总是开始下标包括,结束下标不包括
- 第一个下标和最后一个下标都可以省略。如果省略第一个下标则默认值是
0,如果省略第二个下标则默认值是字符串的长度
虽然在使用下标获取单个字符的时候,如果超出范围会抛出异常。
但是在切片的时候,如果越界则不会抛出异常。
s = "life is short, use python"
print(s[9:100]) # hort, use python
print(s[-1:1000]) # n
1.6 字符串的不可变性
字符串的不可变性是指,字符串在内存中一旦创建,则字符串的内容终身无法更改。如果想获取不同的字符串,只能再重新创建一个字符串。
不可变的好处就是,共享而不用担心同步问题。因为大家都不能修改。
所以,通过下标修改字符串中的某个字符是错误,会抛出异常。
s = "life is short, use python"
s[0] = "c" # 不能修改,这行代码会抛出异常

如果需要不同的字符串,应该创建一个新的,如下面的代码:
s = "life is short, use python"
s1 = "P" + s[1:]
print(s1)

1.7 一些其他的与字符串相关的运算符
前面学习了 +、*、[]、[:]运算符可以操作字符串,还有一些其他的运算符也可以操作字符串。
in
测试字符串是否包含这样的子字符串
s = "python"
print("p" in s) # True s 中是否包含字符串`p`
print("a" in s) # False
not in
与 in 的含义相反
s = "python"
print("a" not in s) # False
print("P" not in s) # True
%(了解)
格式化字符串。格式化字符串有比较多的格则,与 c 语言的 printf() 的格式化规则一样。
常用的就下面 3 种。
name = input("请输入你姓名:")
age = int(input("请输入你的年龄:"))
print("你好%s,你今年%s, 你的工资是 %.2f" % (name, age, 30000.4598))

1.8 字符串对象的常用方法
前面学习的一些函数都是内置函数,直接调用即可。
下面再学习几个字符串对象的方法。(实例方法, 后面面向对象再具体详细学习)
需要注意:在下面的方法中, 如果是涉及到修改字符串的,一定是创建了一个新的字符串,并返回。
使用: 字符串.方法(参数) 来调用
一、 字符串中的大小写变换
s.capitalize()把首字母变换为大写字母,并返回字符串s.lower()把字符串中的所有字母变小写s.upper()把字符串中的所有字母变大写s.swapcase()大小写互换s.title()标题化 每个单词的首字母大写s.center(w)把字符串居中,用空格填充两边。
w是填充后的总长度。如果不想用空格填充,可以传入第二个参数,必须是一个字符。
二、字符串中的测试函数,这些函数的返回值都是bool值
s.isalnum()如果字符串的长度大于 0 ,并且所有字符都是字母或数字,则返回
Trues.isalpha()如果字符串的长度大于 0 ,并且所有字符都是字母,则返回
Trues.isdigit()如果字符串的长度大于 0 ,并且所有字符都是数字,则返回
Trues.islower()所有字母是否全是小写
s.isupper()所有字母是否全是大写
s.istitle()字符串中每个单词首字母是否大写
s.isspace()是否全是空白字符,并至少有一个字符
s.startswith(prefix, start, end)切片[start, end]范围内是否以prefix开头
s.endswith(suffix, start, end)切片[start, end]范围内是否以suffix结尾
三、字符串中的搜索和替换
s.split(sep, maxsplit)使用sep去切割字符串,如果不传入sep则默认使用 空白字符maxsplit为最大分割次数s.rsplit(sep, maxsplit)使用sep从右侧开始切割字符串,如果不传入sep则默认使用 空白字符maxsplit为最大分割次数s.splitelines(keepends)按照行分割字符串,keepends为bool值,默认为False, 如果为真,保留行分隔符s.join(seq)把seq代表的序列用s连接起来
四、字符串的分割和组合
s.find(str, beg=0, end=len)方法检测字符串中是否包含子字符串
str,如果指定beg(开始) 和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回 -1。s.rfind(str, beg=0, end=len)从右侧开始检测字符串中是否包含子字符串str,如果指定beg(开始) 和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回 -1。s.index(str, beg=0, end=len)方法检测字符串中是否包含子字符串str,如果指定beg(开始) 和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回错误。s.rindex(str, beg=0, end=len)从右侧开始检测字符串中是否包含子字符串str,如果指定beg(开始) 和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回 错误。count(substr, start, end)计算substr在切片[start,end]范围内出现的次数replace(oldstr, newstr, count)把oldstr替换为newstr, count为替换次数s.strip([chars])把字符左右两端的
chars去掉 。如果不传入参数,默认去除空格。 中间的不去掉。s.lstrip([chars])s.rstrip([chars])去掉左边或右边的指定字符,默认是空格
s = "hello"
print(s.capitalize())
print(s.center(30, "z"))
print(s.find("el"))
print("123".isdigit())
print("122".isnumeric())
print(" ab c ".strip())
print("aabbaa".strip("a"))
print(max([100, 30, 40, 90]))
print("10.2.3.5".split("."))
print("hell world".title())

Python第五章-内置数据结构01-字符串的更多相关文章
- Python第五章-内置数据结构05-集合
Python内置数据结构 五.集合(set) python 还提供了另外一种数据类型:set. set用于包含一组无序的不重复对象.所以set中的元素有点像dict的key.这是set与 list的最 ...
- Python第五章-内置数据结构02-列表
Python 内置的数据结构 二.列表(list) 想一想: 前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢? 定义100个变量,每个变量存放一个学生的姓名可行吗?有 ...
- Python第五章-内置数据结构04-字典
Python 内置的数据结构 四.字典(dict) 字典也是 python 提供给我们的又一个非常重要且有用的数据结构. 字典在别的语言中有时叫关联数组.关联内存.Map等. 字典中存储的是一系列的k ...
- Python第五章-内置数据结构03-元组
Python 内置的数据结构 三.元组(tuple) python 作为一个发展中的语言,也提供了其他的一些数据类型. tuple也是 python 中一个标准的序列类型. 他的一些操作和str和li ...
- Python的4个内置数据结构
Python提供了4个内置数据结构(内置指可以直接使用,无需先导入),可以保存任何对象集合,分别是列表.元组.字典和集合. 一.列表有序的可变对象集合. 1.列表的创建例子 list1 = []lis ...
- python的四种内置数据结构
对于每种编程语言一般都会规定一些容器来保存某些数据,就像java的集合和数组一样python也同样有这样的结构 而对于python他有四个这样的内置容器来存储数据,他们都是python语言的一部分可以 ...
- Python内置数据结构之字符串str
1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...
- [PY3]——内置数据结构(3)——字符串及其常用操作
字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...
- [PY3]——内置数据结构(4)——字符串格式化(format)
字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...
随机推荐
- Oracle字段
pl/sql查看当前数据库编码语句:select userenv('language') from dual; 测试结果:数据库字符集编码是utf-8 1.nvarchar2(size) ,size不 ...
- C++走向远洋——54(项目一2、分数类的重载、取倒数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- node--fs
1.fs模块内置方法 1)stat 检测是文件还是目录 fs.stat(fileAddress,(err,stats)=>{ //err 出错信息 //stats.isFile() 该东西是文件 ...
- HTML、CSS笔记
盒模型 在CSS中,使用标准盒模型描述这些矩形盒子中的每一个.这个模型描述了元素所占空间的内容.每个盒子有四个边:外边距边, 边框边, 内填充边 与 内容边. 在标准模式下,一个块的总宽度= widt ...
- python基本数据类型的操作
1 列表和元组 1.列表基本操作 1. 列表赋值 a = [1,2,3,4,5,6,7,8] a[0] = 100 #the result : [100, 2, 3, 4, 5, 6, 7, 8] 2 ...
- 负载均衡框架 ribbon 二
Ribbon 负载均衡机制 官方文档地址:https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers 1. Ribbon 内置 ...
- vue_相同组件,不同url跳转不重新渲染的解决方法
最近写的这个项目,有很多下拉菜单,每个菜单会有相应的两种类型.现在产品的需求是,跳转到不同的类型 需要页面重新渲染数据 那么问题来了. 我试了好几种方法,用watch监听路由去判断,但是发现输在inp ...
- java中的while循环和do while循环
那么在讲解循环之前呢我们先来了解一下什么是循环 生活中的例子 车子的轮胎他就是一直在循环 马拉松跑到也是在循环 因为运动员不停的一圈一圈在跑这也是一个循环 那么我们为什么要学习循环呢? 下面看一个 ...
- Python进阶练习与爬取豆瓣T250的影片相关信息
(一)Python进阶练习 正所谓要将知识进行实践,才会真正的掌握 于是就练习了几道题:求素数,求奇数,求九九乘法表,字符串练习 import re #求素数 i=1; flag=0 while(i& ...
- 什么是data:image/png;base64,?一道关于Data URI Scheme的入门级CTF_Web题
一道关于Data URI Scheme的入门级CTF_Web题 0x00 题目描述 这是偶尔遇到的某网安交流群的入群题,题目没有任何的提示,直接给了一个txt文件. 0x01 解题过程 通过给的这个文 ...