python数据结构:元组、字符串

1、元组tuple定义

一个由有序元素组成的不可变的集合,使用小括号()表示;

定义:(1)tuple() 或 tuple( iterable )

eg:t = tuple()

t = ()

t = tuple(range(1,7,2))

t = (1,) #一个元素元组的定义,注意有个逗号;

2、元组元素的访问

(1)支持索引(下标),索引不可越界,否则会报IndexError异常;

tuple[ index ]:index就是索引,使用中括号访问;

3、元组查询

index(value,[start,[stop] ] )

(1)通过value,从指定区间查找列表内的元素是否匹配。当查找到第一个时立即返回索引;

(2)匹配不到,抛出ValueError异常;

注意:index和count方法的时间复杂度都是O(n),随着列表数据规模的增大,而效率下降;

len( tuple ):返回元素的个数;

4、元组tuple其他操作

元组是只读的,所以增、改、删方法都没有;

5、命名元组namedtuple

namedtuple( typename,field_names,verbose=False,rename=False )

(1)命名元组,返回一个元组的子类,并定义了字段

(2)field_names可以是空白符或逗号分割的字段的字符串

eg:from collections import namedtuple

Point = namedtuple( ‘ P ’,['x',‘y’] )

p1 = Point(11,12)

Student = namedtuple(‘Student’,‘name age’)

tom = Student(‘tom’,20)

jerry = St(‘jerry’,18)

tom.name

字符串

1、定义:

由一个个字符组成的不可变的有序的序列,是字符的集合,使用单引号,双引号,三引号引住的字符序列;

注意:Python3起,字符串就是Unicode类型;

2、字符串元素访问【索引、下标】

(1)字符串支持使用索引访问;

eg:sql = ‘select * from table’

sql[ 4 ] #字符串‘ c ’

sql[ 4 ] = 'o' #不支持此种替换,因为字符串是不可变的;如需要替换使用replace(old,new[,count])

(2)有序的字符集合,字符序列;

eg:for c in sql:

print(c)

print(type(c)) #什么类型? 字符串类型,python3中只有字符串类型

(3)可迭代;

eg:lst = list(sql)

3、字符串 join 连接

“ string ”.join(iterable) → str

(1)将可迭代对象连接起来,使用string作为分隔符;

(2)可迭代对象本身都是字符串;

(3)返回一个新字符串;

4、字符串 + 连接

+ → str

(1)将两个字符串连接在一起,返回一个新字符串;

5、字符串分割

分割字符串的方法分为2类:

split( [ sep,maxsplit ] ):将字符串按照分隔符分割成若干字符串,并返回列表;

partition:将字符串按照分隔符分割成2段,返回这两段和分隔符的元组;

split和partition区别?

(1)split是将字符串分割成若干段(有多少分多少),partition是将字符串分割成两段再加上分隔符(有多少分两段);

(2)split返回的是一个列表,partition返回的是一个元组;

split系:split【1、从左到右分割;2、sep指定分隔符,缺省为空白字符串;3、maxsplit指定分割次数,-1表示遍历整个字符串】、

rsplit【1、从右到左分割;2、sep指定分隔符,缺省为空白字符串;3、maxsplit指定分割次数,-1表示遍历整个字符串】、

splitlines( [ keepends] )【1、按照行空白符来切分字符串;2、keepends指的是是否保留行分隔符;3、行分隔符包括 \n,\r\n,\r】

partition( sep ) →(head,sep,tail):从左至右,遇到分隔符就把字符串分成两部分,返回头、分隔符、尾三部分的三元组;如果没有找到分隔符,就返回头、2个空元素的三元组;

注意:sep分割字符串,必须指定;

rpartition(sep) → (head,sep,tail):从右向左………………………………

6、字符串大小写

upper():全大写

lower():全小写

注意:大小写一般做判断的时候用

swapcase():交互大小写

7、字符串排版【了解】

title()→ str:标题的每个单词都大写

capitalize()→ str:首个单词大写

center( width [, fillchar] ) → str

width:打印宽度

fillchar:填充的字符

zfill(width)→ str

width:打印宽度,居右,左边用0填充

ljust( width [, fillchar] ) → str:str左对齐

rjust( width [, fillchar] ) → str:str右对齐

8、字符串修改

replace(old,new[,count] ) → str

(1)字符串中找到匹配替换为新字串,返回新字符串

(2)count表示替换几次,不指定就是全部替换

strip( [chars] ) → str

(1)从字符串两端去除指定的字符集chars中的所有字符

(2)如果chars没有指定,去除两端的空白字符

(3) lstrip( [chars] ) → str:从左开始

(4)rstrip( [chars] ) → str:从右开始

9、字符串查找

find(sub [ ,start[,end] ] ) → int:在指定的区间【start,end),从左至右,查找子串sub。返回索引,没有找到返回-1;

rfind(sub [,start[,end] ] ) → int:……,从右至左,……

index(sub [,start[,end]] ) → int:在指定的区间【start,end),从左至右,查找字串sub。找到返回索引,没找到抛出异常ValueError;

rindex(sub [,stat[,end]] ) → int:……,从右至左……

注意:find与index相比find更加高效,因为如果find没有找到不会报异常,而index会报异常;

count(sub[,start[,end]] ) → int

(1)在指定区间内【start,end),从左至右,统计字串sub出现的次数;

endswith(suffix[,start[,end]] ) → bool

(1)在指定的区间【start,end),字符串是否以suffix结尾

startwith(prefix[,start[,end]] ) → bool

(1)在指定的区间【start,end),字符串是否以preffix开头

时间复杂度:

(1)index和count方法都是O(n),随着列表数据规模的增大,而效率下降;

len(string):返回字符串长度,即字符个数;

10、字符串判断 is 系列

【1】isalnum() → bool:判断是否字母和数字组成;

【2】isalpha() → bool:是否是字母

【3】isdecimal() → bool:是否只包含十进制数字

【4】isdigit() → bool:是否全部是数字(0-9)

【5】isdentifier() → bool:是不是字母和下划线开头,其他都是字母、数字、下划线【判断是否是标识符】

【6】islower() → bool:是否都是小写

【7】isupper() → bool:是否都是大写

【8】isspace() → bool:是否只包含空白符

11、字符串格式化

format函数格式化字符串语法———Python鼓励使用

【1】“{} {xxx}”.format(*args,**kwargs)→ str

【1】args是位置参数,是一个元组

【2】kwargs是关键字参数,是一个字典

【3】花括号表示占位符

【4】{}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值

【5】{xxx}表示在关键字参数中搜索名称一致的

【6】{{}}表示打印花括号

猜你喜欢

转载自blog.csdn.net/qq_40042590/article/details/81587314