python基础练习——数据结构大汇总
目录
一、列表
1、列表的定义
列表是有序集合,没有固定大小,能够保存任意数量任意类型的python对象,语法为[元素1,元素2,……,元素n]
2、列表的创建
注意:list中保存的是对象的指针
(1)创建一个普通列表
x = [1,2,3,4,5]
(2)利用range()创建列表
x = list(range(1,11,2)) # x = [1,3,4,5,9]
(3)利用推导式创建列表
x = [i for i in range(1,11,2)] # x = [1,3,5.7,9]
(4)创建一个混合列表
x = [1, ‘python’, 3.14, [1,2,3]]
(5)创建一个空列表
x = []
3、向列表中添加元素
(1)list.append(obj)
在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在列表中保持着原结构类型
(2)list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值
(3)list.insert(index, obj)
在编号index位置插入元素
4、删除列表中的元素
(1)list.remove(obj)
删除列表中某个值的第一个匹配项
(2)list.pop([index=-1])
删除列表中的下标为index的元素,默认为最后一个,并返回该元素的值。
(3)del list[开始下标值:结束下标值]
(4)如果要从列表中删除一个元素,并且不再以任何形式使用它,就是用 del语句;如果要在删除以后还能继续使用,就用pop语句
5、获取列表中的元素
(1)通过元素索引值,从列表中获取单个元素。
(2)通过将索引指定为-1,获取最后一个元素,-2获取倒数第二个元素,以此类推。
(3)列表切片获取多个元素
list[start: stop: step]
6、列表的常用操作符
等号操作符:==
连接操作符:+
重复操作符:*
成员关系操作符:in, not in
等号操作符只有元素和元素位置都相同时才返回True
列表拼接方式:+、*
7、列表的其他方法
(1)list.count(obj)
统计某个元素在列表中出现的次数
(2)list.index(x, start, stop)
从列表中的start位置到stop位置找出元素x第一次出现的索引位置
(3)list.reverse()
反向列表中的元素
(4)list.sort(key=None, reverse=False)
当列表中嵌套列表时,可通过指定key指定对内部列表中的第几个元素进行排序。
reverse=False(升序),reverse=True(降序)
二、元组
1、创建和访问一个元组
元组与列表类似,不同之处在于元组被定义后不可修改。
定义方式与列表相同,只是元组用(),列表用[]
2、更新和删除一个元组
元组有不可修改性,不能直接给元组赋值,但是只要元组中的元素是可修改的,我们就可以其元素的值。
3、元组相关的操作符
与列表相同
4、内置方法
tuple.count(obj):记录obj在元组中的出现次数
tuple.index(obj):获取obj在元组中的索引
5、解压元组
定义与元组相同结构的元组来接收解压出来的元素,一一对应的。
若只想要某一些元素,其他的可以用*_来接收
三、字符串
1、字符串的定义
(1)使用单引号或双引号定义字符串
(2)常用转义字符
\\:反斜杠字符
\’:单引号
\”:双引号
\n:换行
\t:制表符(TAB)
\r:回车
(3)原始字符串只需要在字符串前加一个r即可
(4)三引号允许一个字符串横跨多行
2、字符串的切片与索引
(1)类似于元组具有不可修改性
(2)切片str[start:end],包含start,不包含end
3、字符串的常用内置方法
(1)str.capitalize():将字符串的第一个字符转换为大写
(2)str.lower():将字符串所有大写字符转换为小写
(3)str.upper():将字符串所有小写字符转换为大写
(4)str.swapcase():将字符串中大写转换为小写,小写转换为大写
(5)str.count(str, start, end):返回字符串str在整个字符串的start到end位置出现的次数。
(6)endswith(suffix, start, end):检查字符串是否以子字符串suffix结尾
(7)startswith(substr, start, end):检查字符串是否以子字符串substr开始
(8)find(str, start, end):检查str是否包含在字符串中
(9)rfind(str, start, end):从右边开始检查str是否包含在字符串中。
(10)isnumeric():检查字符串中是否只包含数字字符
(11)ljust(width, fillchar)/rjust(width, fillchar):返回原字符串左对齐/右对齐,并使用fillchar字符填充至width长度的新字符串
(12)lstrip(char)/rstrip(char)/strip(char):截掉字符串左边/右边/左右的空格或指定字符
(13)splitlines(keepends):按照行(\r, \r\n, \n)分割,keepends为False时不保留换行符,为True时包留换行符
(14)maketrans(intab, outtab):创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。
(15)translate(table, deletechars=””):根据参数table给出的表,转换字符串的字符,要过滤掉的字符放到deleteachars中
4、字符串格式化
(1)format格式化函数
str = “{} Love {}”.format(‘I’, ‘python’)
(2)字符串格式化符号
(3)格式化操作符辅助指令
四、字典
1、可变类型与不可变类型
数值、字符和元组是不可变类型
列表、集合和字典是可变类型
判断是否可变的方法:
hash(X),若不报错则是不可变,反之就是可变
2、创建和访问字典
(1)dic = {key1: value1, key2: value2, ……}
(2)通过构造函数dict()构造字典
① dict()创建一个空字典,然后通过dic[key] = value赋值
② dict([(key1,value1), (key2, value2), ……])
③ dict(key1=value1, key2=value2, ……)此方法中的key只能是字符串类型,并且创建时不能加引号。
3、字典的内置方法
(1)dict.fromkeys(seq, value)
创建一个新字典,以序列seq中的元素作为key,value为所有key的初始值。
(2)dict.keys()
返回一个可迭代对象,可以用list()函数来转换为列表,获取到字典中的所有key
(3)dict.values()
返回一个可迭代对象,可以用list()函数来转换为列表,获取到字典中的所有value
(4)dict.items()
返回一个可迭代对象,可以用list()函数来转换为列表,获取到字典中的所有键值对
(5)dict.get(key, default=None)
返回指定键的值,若不存在,则返回默认值
(6)dict.setdefault(key, default=None)
与get方法类似,不同之处在于若不存在会将键添加到字典中,值设置为默认值
(7)key in/not in dict
判断key是否存在与字典中
(8)dict.pop(key, default)
删除key的值,返回被删除的值
(9)del dict[key]
删除key的值
(10)dict.popitem()
随机删除字典中的一个键值对并返回删除后的字典
(11)dict.clear()
清空字典
(12)dict.copy()
复制字典
(13)dict.update(dict2)
将dict2的键值对更新到dict中
五、集合
集合与字典类似,也是一组key的集合,但是集合中不存储value,只有key,没有重复的元素
1、集合的创建
(1)创建空集合只能用s = set()
set.add():添加元素
(2)s = {元素1,元素2,元素3,……}
(3)使用set(value)函数将列表或元组转换为集合
2、访问集合中的元素
(1)使用len(s)函数获取集合的大小
(2)可以使用for循环读取集合中的数据
(3)可以通过in或not in判断元素是否在集合中
3、集合的内置方法
(1)set.add():给集合添加元素
(2)set.update(set1):更新set1的内容到set中
(3)set.remove(value):删除指定的value,若元素不存在会报错
(4)set.discard(value):删除指定的value,若不存在不会报错
(5)set.pop():随机删除一个元素
(6)set1.intersection(set2)/ set1 & set2:返回两个集合的交集
(7)set1.intersection_update(set2):在原始集合上移除两个集合不重叠的元素
(8)set1.union(set2)/ set1 | set2:返回两个集合的并集
(9)set1.difference(set2)/ set1 - set2/ set1.difference_update(set2):返回两个集合的差集
(10)set1.symmetric_difference(set2)/ set1 ^ set2/ set1.symmetric_difference_update(set2):两个集合的异或
(11)set1.issubset(set2)/ set1 <= set2:判断集合1是否被集合2包含
(12)set.isdisjoint(set):判断两个集合是不是不相交
4、不可变集合
frozenset()产生一个不可添加或删除的集合