Python基本数据结构

字符串

定义

它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或’’’ ‘’’中间包含的内容称之为字符串。

创建

res=’ hello world ‘

常用操作

  • res.strip() 移除字符串两端的空白
  • res.split(sep=None) 以sep为分割符,分割字符串,返回列表
  • res[4],res[1:4] 索引取值,切片

字符串的搜索和替换

S.find(substr, [start, [end]])   返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
S.index(substr, [start, [end]])   与find()相同,只是在S中没有substr时,会返回一个运行时错误
S.rfind(substr, [start, [end]])   返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]])   计算substr在S中出现的次数
S.replace(oldstr, newstr, [count])   把S中的oldstr替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
S.strip([chars])   把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
S.lstrip([chars])   把S中前chars中有的字符去掉
S.rstrip([chars])   把S中后chars中有的字符全部去掉
S.expandtabs([tabsize]   把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个

字符串的分割和组合

S.split([sep, [maxsplit]])   #以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])   #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
S.join(seq)   #把seq代表的序列──字符串序列,用S连接起来字符串的mapping,这一功能包含两个函数:
String.maketrans(from, to)   #返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。
S.translate(table[,deletechars])   # 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译 表。

字符串中字符大小写的变换

S.lower()    #小写
S.upper()   #大写
S.swapcase()    #大小写互换
S.capitalize()    #首字母大写
String.capwords(S)   #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起
S.title()    #只有首字母大写,其余为小写,模块中没有这个方法

字符串的测试函数,返回布尔值

S.starstwith(prefix[,start[,end]])   #是否以prefix开头
S.endswith(suffix[,start[,end]])   #以suffix结尾
S.isalnum()    #是否全是字母和数字,并至少有一个字符
S.isalpha()    #是否全是字母,并至少有一个字符
S.isdigit()    #是否全是数字,并至少有一个字符
S.isspace()   #是否全是空白字符,并至少有一个字符
S.islower()   #S中的字母是否全是小写
S.isupper()   #S中的字母是否便是大写
S.istitle()   #S是否是首字母大写的

字符串对齐输出

S.ljust(width,[fillchar])   #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar])    #右对齐
S.center(width, [fillchar])    #中间对齐
S.zfill(width)   #把S变成width长,并在右对齐,不足部分用0补足

列表

定义

[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素。

特性

  • 可以存放多个值。
    • 可以修改指定索引位置对应的值,可变类型。
    • 按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序。

创建

list_test=[‘hello’,12,(1,3,)] list_test=list(‘abc’) list_test=list([‘lhf’,12,’ok’])

常用操作

classmates = [‘Michael’, ‘Bob’, ‘Tracy’]

  • 索引 classmates[0]
  • 切片 classmates[0:]    classmates[0::2]    classmates[2::-1]
  • 追加 classmates.append(‘Adam’)    classmates.insert(1, ‘Jack’)
  • 删除 classmates.pop()    classmates.remove(‘Adam’)

常用函数

.copy()    复制
.append()  在列表后增加元素
.insert()   在索引号前增加元素
.pop()   默认从后面删除元素
.remove()  按照元素进行删除
.index()   按照元素进行查找
.clear()   清楚列表元素,原列表为空
.count()   查找元素的个数
.extend([1,2,3])    扩展列表,将[1,2,3]列表和原列表合成一个列表
.reverse()  将列表进行倒序
.sort()    将列表中的元素按顺序排列。字符串和数字不能同时排序。.sort(reverse=True)倒序排列。

元组

定义

与列表类似,将[]该为()

特性

可存多个值,不可变,有序。

创建

t=()   t=tuple([11,22,33])  t=(1,)   t=(1,2,[3,4])

常用操作

ages = (11, 22, 33, 44, 55)

  • 索引 ages[0]
  • 切片 ages[0:]    ages[-3:-1]    ages[:3]
  • 循环 for i in ages:print(i)
  • 成员判断 11 in ages #True

字典

定义

字典是一种可变容器模型,可以存储任意类型对象。字典由键和对应值成对组成。字典也被称作关联数组或哈希表。key-value结构。key为不可变类型,即可hash。

特性

  • 可存放多个值,任意类型。
  • 可修改指定key对应的值,可变。
  • 无序。

创建

person = {‘name’:’egon’,’age’:18}
person = dict(name=’egon’, age=18)
person = dict(([‘name’,’egon’],[‘age’,18]))
person = {}.fromkeys([‘name’,’age’],100) #不指定100默认为None

常用操作

d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}

  • 索引 d[‘Michael’]
  • 新增 d[‘alex’]=100
  • 删除 d.pop(‘Bob’)
  • 循环 for i in d: print(i,d[i])
  • 成员判断 ‘Michael’ in d # True    d.get(‘Thomas’,-1) #-1

常用函数

.pop(key,’str’)    删除key对应的键值对,返回value。key不存在返回str。
.popitem()       随机删除键值对
.keys()         返回字典的所有key到dict_keys中。可以使用list(d.keys())
.values()        返回字典的valu到dict_values中,可以使用list(d.keys())
.items()        返回键值对。
.get(key,’str’)    返回key对应的值value,key不存在返回自定义的str。
.clear()        清空字典
.copy()        复制字典
{}.fromkeys([],None)  初始化字典
.update(dict)     将新字典ditct更新到原字典中,键存在覆盖值,键不存在创建键值对

集合

定义

集合,是一个无序且不重复的元素集合。集合对象是一组无序排列的可哈希的值。

创建

s = set()
s= { 11,22,33,44 }
f_set = frozenset(s) #不可变集合
注意:创建空集合只能用set(),使用s s= {},创建的是空字典。

常用操作(关系运算)

python_s = {‘egon’,’alex’,’钢蛋’,’老王’}
linux_s = {‘alex’,’钢蛋’,’欧德博爱’,’艾里科四’}

python_s & linux_s 交集
python_s | linux_s 并集
python_s - linux_s 差集
linux_s - python_s 差集
linux_s ^ python_s 对称差集

python_s.intersection(linux_s)  交集
python_s.union(linux_s)     并集
python_s.difference(linux_s)) 差集#python_s-linux_s
python_s.symmetric_difference(linux_s)     对称差集,python_s ^ linux_s
python_s.difference_update(linux_s)      将linux_s的值更新到python_s的几个集合中

常用函数

.add()      给集合添加元素
.remove()    删除集合中的元素,无元素会报错
.discard()    删除集合中的元素,不报错
.issubset()   判断是否是子集
.issuperset()  判断是否是父集
.isdisjoint()   判断是否有交集,没有交集返回True