python基础--字符串、列表、元组

字符串

定义

4种定义方式

  • 两个单引号包裹:’…’
  • 两个双引号包裹:”…”
  • 前后各三个单引号包裹:”’…”’
  • 前后各三个双引号包裹:”“”…”“”

定义时注意点

  • 字符串外层使用单引号,内层就使用双引号,反之亦然
  • 字符串中要保留单/双引号字符出现的时候,使用转义符
  • ”’…”’和”“”…”“”中定义的字符串里面出现单/双引号的时候,自动按照转义处理(也就是说按照原始)

下标

用下标可以确定字符串中各个字符的位置

下标其实是偏移量,从数据块开头开始,偏移0各单位就是第一个单位数据,所以下标是从0开始的。

切片

语法

[起始:结束:步长](这里注意不包含结束字符)

方向

切片方向默认是从左往右,步长为负数才会掉头

常见

格式 含义
str[n:m] 下标第n位到第m位,不包含第m位
str[n:-1] 下标第n位到倒数第二位
str[n:] 第n位到最后全部
str[:m] 从头开始到m位,不包含m
str[n:m:a] n位到m位,每a个作为间隔
str[::-1] 翻转

注意

切片没有越界异常,边界写的太大,仍然会按照最大位置走

常见操作方法

find

mystr.find(str,start=0,end=len(mystr))

检测str是否包含在mystr的规定部分中,如果有返回索引值,没有返回-1

index

mystr.index(str,start=0,end=len(mystr))

同上find,不过没有找到时直接报异常

count

mystr.count(str,start=0,end=len(mystr))

返回str在mystr中的start和end之间出现的次数

replace

mystr.replace(str1,str2,mystr.count(str1))

把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次

split

mystr.split(str=” “,2)

以str为分隔符切片mystr,如果maxsplit有指定值,则仅分隔maxsplit次。如果没有指定分隔符,默认所有空白字符都是(包括:空格,tab,换行

capitalize

mystr.captalize()

把字符串的第一个字符大写

title

mystr.title()

将字符串中每个单词大写

startswith

mystr.startswith(str)

检查字符串是否以str开头,是则返回True,否则返回False

endswith

mystr.endswith(str)

检查mystr是否以str结束,如果是返回True,否则返回False

lower

mystr.lower()

将mystr中字符全部小写

upper

mystr.upper()

将mystr中字符全部大写

ljust

mystr.ljust(width[,fillchar])

返回一个原字符串左对齐,并使用指定的字符填充至长度width的新字符串,默认填充字符是空格

rjust

mystr.rjust(width[,fillchar])

同上,原字符右对齐,左边填充

center

mystr.center(width[,fillchar])

同上,原字符串居中,两边填充

lstrip

mystr.lstrip(char)

删除字符串mystr左端指定的字符,默认删除空白字符

rstrip

mystr.rstrip(char)

同上,删除右边

strip

mystr.strip(char)

同上,删除两端

rfind

mystr.rfind(str,start=0,end=len(mystr))

类似find()函数,不过从右边开始查找

rindex

mystr.rindex(str,start=0,end=len(mystr))

类似index,不过从右边开始

partition

mystr.partition(str)

将mystr以str分割成三部分,str前,str,str后

rpartition

mystr.rpartition(str)

同上,不过从右边开始

splitlines

mystr.splitlines()

按照\n换行符分割,返回一个包含各行内容作为元素的列表

isalpha

mystr.isalpha()

如果mystr所有字符都是字母,则返回True,否则返回False

isdigit

mystr.isdigit()

如果mystr只包含数字则返回True,否则返回False

isalnum

mystr.isalnum()

如果mystr中只包含数字,则返回True,否则返回False

issapce

mystr.isspace()

如果mystr中只包含空白字符,则返回True,否则返回False

join

str.join(可迭代对象)

将可迭代对象中各个元素中间插入str,然后合并构成一个新的字符串

列表

定义

1. a=[元素1,元素2,....]
2. a=[]  :创建空的
3. a=list() 创建空的
4. a=list(可迭代对象)

元素可以是不同的类型,但是一般建议或使用的时候都是存储的是同类型的数据

第四种中可以是一个列表,那个生成的列表实现浅拷贝

遍历

for

for 临时变量 in 列表对象:
    使用列表元素代码

while

i=0
while i<len(列表对象):
    列表对象[i]的元素提取并使用
    i+=1

常见操作

增加元素

append

在列表的后部整体添加,相当于a[len(a):]=[x]

insert

insert(index,obj)

在指定位置插入

extend

将可迭代对象中每个元素分别依次添加在该列表后方,相当于:a[len(a):]=b

+=

同上extend

修改元素

a[下标] = 值

赋值语句,下标如果上面没有值会抛越界异常

删除元素

del

del a[n]

删除a列表中下标为n的元素

pop

a.pop([index=-1])

泵出指定下标一个元素并返回,默认下标是-1,也就是最后一个

remove

列表对象.remove(元素值)

根据列表中元素删除,默认只删除第一次遇到的元素

clear

a.clear()

清空所有元素,相当于del a[:]

查询元素

  • in:如果存在那么结果为True,否则返回false
  • not in:同上反之
  • a.index(b,n,m):在a列表中的下标为n到m-1的元素中查询b,查询到返回下标,没有查询到就抛异常
  • a.count(b):在列表a中查询b出现了多少次
  • 通过下标查询
  • 通过切片查询

排序

  • sort
    a.sort([reverse=False])

    默认按照特定规则,从小到大排序,reverse=True的时候是按照由大到小排列
  • reverse
    a.reverse()

    列表翻转

浅拷贝

  • copy
    a.copy()

    返回一个列表的浅拷贝,也就是说,将各元素的内存地址引用重新组织成一个新的列表,然后将列表地址返回赋值。重点是,前后两个列表的内存地址不一致,但是内部元素的地址引用不变。相当于:a[:]
  • 切片
    b=a[:]

    解释同上(这里待以后研究,可能有解释不到位之处)

列表推导式

[要存储的表达式 包含变量的计算表达式]

将后面的表达式计算出来,遍历或者其他,然后将前面需要的变量返回给前面,然后按照前面表达式计算后存储成一个列表

例子:[x**2 for x in range(1,10)]:这里后面for遍历一个元素就将x传给前面,存储后又继续遍历

注意
后面的表达式可以嵌套使用几种和几个

[x**2 for x in range(1,100) if x % 3 == 0 ]:将1到100之间能被3整除的数计算平方然后放在列表中

嵌套

嵌套:列表中元素可以是任意类型的,所以也可以嵌套列表

元组

创建

  • a=():创建空的
  • a=(元素1,元素2,….)
  • a=tuple():创建空的
  • a=tuple(可迭代对象)

格式

(元组元素1,元组元素2,…,元组元素n)

操作

元组定义之后就无法修改内部元素了

其他操作基本和列表相同

注意点

一个元素的元组,为了和(数学表达式)这种格式分开,必须在元素后面加逗号。

a = (2, )

格式

{元素1,元素2,…元素n}

定义创建

  • a=set():创建set对象
  • a={元素}:这里注意,内部必须有元素,不然和字典冲突
  • a=set(可迭代对象)

特点

内部元素的存放方式是按照将元素进行哈希算法计算后组织存放的

无序:因为通过算法存放的,所以,无序(存放的位置和添加的时间无关)

不重复

不能通过下标(因为没有下标这么个说法)直接查看和修改

嵌套

内部元素由于是需要哈希的,所以只有可以哈希的才能被嵌套存放,暂时是数字,布尔值,字符串,元组

方法操作

  • add()
  • clear()
  • copy() 浅拷贝
  • pop() 移除并返回任意一个元素
  • remove(元素) 移除元素,如果不存在就抛异常
  • discard(元素) 移除该元素,如果没有该元素,不处理

其他操作

交并补等,这里不详述,以后有机会补上

下面是除方法之外,还支持的几种位运算符计算
+ &:交集
+ |:并集
+ -:差
+ ^:两个集合都独有的组合起来返回

运算符

运算符 python表达式 结果 描述 支持的数据类型
+ [1,2]+[3,4] [1,2,3,4] 合并 字符串,列表,元组
* [‘hi’]*3 [‘hi’,’hi’,’hi’] 复制 字符串,列表,元组
in 3 in (1,2,3) True 元素是否存在 字符串,列表,元组,字典
not in 4 not in (1,2,3) True 元素是否存在 字符串,列表,元组,字典

字典这里in方法,只会判断键,因为它是替换python2中has_key()的

内置函数

方法 描述
cmp(item1,item2) 比较两个值,python3取消了,不支持
len(item) 容器中元素个数
max(item) 返回容器中元素最大值
min(item) 返回容器中元素最小值
del(item) 删除变量(其实就是del item,为了保持格式一致和好用)

多个共同遍历

同时循环两个或更多的序列,使用zip()打包

for x,y in zip(a,b):
    ....

Zip打包遍历

注意

如要在循环内部修改正在遍历的序列,最好首先制作副本,在序列上循环不会隐式的创建副本,切片表示法(列表)尤其方便(这里其实浅拷贝的都行)

浅拷贝排序

sorted(a)排序,浅拷贝并排序,建立一个排序后的副本

猜你喜欢

转载自blog.csdn.net/lb786984530/article/details/79894868