Python基础刻意练习——Day5:字符串与序列

Day1:变量、运算符与数据类型
Day2:条件与循环
Day3&4:列表与元组
Day5:字符串与序列——>本文
Day6&7:函数与Lambda表达式
Day8:字典与集合
Day9&10:文件与文件系统
Day11:异常处理
Day12:else 与 with 语句
Day13&14:类与对象
Day15&16:魔法方法
Day17:模块

一、字符串

1.基本形式

可以使用引号( ’ 或 " )来创建字符串
创建字符串很简单,只要为变量分配一个值即可。
注意,python不支持单字符类型(char),单字符在 Python 中也是作为一个字符串使用

str1="hello"
str2='hello'
if str1==str2:			#两者并无区别
    print(type('c'))
#			#单字符也是str类型的

2.子字符串

可以使用方括号来截取字符串,以及获取其中单字符串

str1="hello"
print(str1[2])
#l
print(str1[2:4])
#ll

3.转义字符与原始字符串

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。

转义字符 描述
\(在行尾时) 续行符
\ 反斜杠符号
\’ 单引号
\" 双引号
\b 退格(Backspace)
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页

所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

print(r'\n')
#\n			不是换行

4.字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
应该用的很少,就不赘述了。

5.字符串的编码

在Python3中,所有的字符串都是Unicode字符串
对于单个字符的编码:
Python中ord()函数可获取字符的整数表示
chr()函数把编码转换为对应的字符

print (ord('A'))
#65
print (ord('我'))
#25105
print(chr(66))
#B

6.Python 的字符串内建函数

方法 具体描述
capitalize() 将字符串的第一个字符转换为大写
center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
lower() 转换字符串中所有大写字符为小写.
upper() 转换字符串中的小写字母为大写
swapcase() 将字符串中大写转换为小写,小写转换为大写
lstrip() 截掉字符串左边的空格或指定字符
rstrip() 删除字符串字符串末尾的空格.
strip([chars]) 在字符串上执行 lstrip()和 rstrip()
max(str) 返回字符串 str 中最大的字母。
min(str) 返回字符串 str 中最小的字母。
replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。

二、序列

来源:【Python学习笔记】三、序列(Sequence)

Python有6中种内建的序列:
列表、元组、字符串、Unicode字符串、buffer对象、xrange对象

通用的序列操作

(1)索引(Indexing)

序列中的每个元素被分配一个序号,即元素的位置,称为索引。以正数第一个元素的索引为0,正数第二个元素的索引为1,倒数第一个元素的索引为-1,以此类推。

(2)分片(Slicing)

分片使用2个冒号分隔的3个数字来完成:[srart : end : step]

第一个数字表示切片开始位置(默认为0),第二个数字表示切片截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1)

可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。

与使用下标访问列表元素的方法不同,切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。

step为正时,Python会从序列头部开始向右提取元素,直到最后一个元素, start索引的元素应在end索引的元素左边,否则将返回一个空序列;step为负时, Python会从序列尾部开始向左提取元素,直到第一个元素,这时start索引的元素应在end索引的元素右边,否则将返回一个空序列。step不能为0。

注意,
切片可以返回列表的浅拷贝a[:]==a
a[:]将得到包含a所有元素的分片,是一种很有效率的复制整个列表的方法

(3)加(Adding)

序列连接操作,只有相同类型的序列才能进行连接操作
实质上是创建了一个新序列并将原序列中的元素和新元素依次复制到新序列的内存空间

(4)乘(Multiplying)

序列重复操作,用数字x乘以一个序列会产生新的序列,新的序列是原序列的重复

(5)成员资格

使用in运算符(布尔运算符)检查一个元素是否在序列中,返回布尔值True或False

2 in [2,3,4]
#True
[2] in [2,3,4]
#False
‘P’in ‘PYTHON’
#True

(5)内建函数

  • len():返回序列中的元素个数
  • max()、 min():返回序列中的最大或最小元素

(7)迭代(iteration)

(8)赋值、浅拷贝与深拷贝

  • 直接赋值:其实就是对象的引用(别名)。
    b = a: 赋值引用,a 和 b 都指向同一个对象。

  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
    b =a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
    如果原地修改子对象,父对象也会改变。

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
    b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

你可能感兴趣的:(python基础)