参考书目:Python数据结构与算法分析 第2版
作者:作者:[美] 布拉德利·米勒(Bradley N. Miller) 戴维·拉努姆
出版社:人民邮电出版社
一.可用于任意python序列的运算
运算名 | 运算符 | 解释 |
---|---|---|
索引 | [] | 取序列中某个元素 |
连接 | + | 将序列连接在一起 |
重复 | * | 重复N次连接 |
成员 | in | 询问序列中是否有某元素 |
长度 | len | 返回序列中的元素个数 |
切片 | [::] | 截取序列中的一部分 |
方法名 | 用法 | 解释 |
---|---|---|
append | alist.append(item) | 在列表的末尾添加一个新元素 |
insert | alist.insert(i,item) | 在列表的第i个位置插入一个元素 |
pop | alist.pop() | 删除并返回列表中最后一个元素 |
pop | alist.pop(i) | 删除并返回列表中第i个元素 |
sort | alist.sort() | 将列表元素排序,python中的算法是Timsort混合排序算法(归并排序和插入排序的算法)时间复杂度是O(nlogn),空间复杂度是O(n) |
reverse | alist.reverse() | 将列表元素倒序排序 |
del | del alist[] | 删除列表第i个位置的元素 |
index | alist.index(item) | 返回item第一次出现时的下标 |
count | alist.count(item) | 返回列表中item出现的次数 |
remove | alist.remove(item) | 从列表中移除第一次出现的item |
二.python中常用的range函数:
range(item1,item2,item3),其中item1为起始位置,item2为终止位置(不包含终止位置,开区间),item3为切片间隔,例如-1表示倒置,2表示间隔2个长度。
三.python中的字符串:
python中每个字符串相当于一个字符数组(python一般称为列表),可以使用以上列表中的方法,以下是一些特有方法。
方法名 | 用法 | 解释 |
---|---|---|
center | astring.center(w) | 返回一个字符串,原字符串居中,使用空格填充新字符串,使其长度为w |
count | astring.count(item) | 返回item出现的次数 |
ljust/rjust | astring.ljust(w) | 返回一个字符串,将原来字符串靠左/右放置并填充空格至长度w |
lower/upper | astring.lower()/upper() | 返回均为小写,大写字母的字符串 |
find | astring.find(item) | 返回item第一次出现时的下标 |
split | astring.split(schar) | 在schar位置将字符串分割成子串 |
列表与字符串的区别:
列表可以通过下标修改其中元素的值,而字符串不能
四.python中集合set及其运算
集合set是由0个或者多个不可修改的python数据对象组成的无序集合,集合不允许重复而且集合是由花括号包含,逗号分隔的一系列值,空集合用set()表示,{'cat',5,6.3,false,[0,0]}
运算名 | 运算符 | 解释 |
---|---|---|
成员 | in | 查询集合中是否含有某元素 |
长度 | len | 获取集合中元素的个数 |
| | aset|otherset | 返回一个包含aset和otherset所有元素的新集 |
& | aset&otherset | 返回一个包含aset与otherset共有元素的新集 |
- | aset-otherset | 返回一个只出现在aset而不出现在otherset上的新集 |
<= | aset<=otherset | 判断aset中的所有元素是否在otherset中,返回值为False与True |
方法名 | 用法 | 解释 |
---|---|---|
union | aset.union(otherset) | 返回一个包含aset和otherset所偶遇元素的集合(与|运算返回结果相同) |
intersection | aset.intersection(otherset) | 返回一个仅包含两个集共有元素的集合(与&运算返回结果相同) |
difference | aset.difference(otherset) | 与-运算返回结果相同 |
issubset | aset.issubset(otherset) | 判断aset是否为otherset的子集 |
add | aset.add(item) | 向aset中添加一个元素 |
remove | aset.remove(item) | 将item从aset中移除 |
pop | aset.pop() | 随机移除aset中一个元素 |
clear | aset.clear() | 清除aset中所有元素 |
五.python中字典及其运算和方法
注意:字典中允许出现键相同的数据成员,但后面的数据成员会将前面的数据成员覆盖
dist={'demo':10,'rat':5.5,'rat':3.5,'demo':5}
print(dist)
结果为:{'demo': 5, 'rat': 3.5}
方法/运算 | 用法 | 解释 |
---|---|---|
[] | mydict[key] | 返回与k相关联的值,如果没有则报错 |
in | key in adict | 判断键是否在字典中 |
del | del adict[key] | 从字典中删除键值对 |
keys | adict.keys() | 以列表形式返回字典中所有键,dict_keys对象 |
values | adict.values() | 以列表形式返回字典中所有值(不会去重)dict_values对象 |
items | adict.items() | 返回字典中所有键值对的dict_items对象 |
get | adict.get(key) | 返回字典中key对应的值,没有则返回None |
get | adict.get(key,alt) | 返回字典中key对应的值,没有则返回alt |
e={'demo':10,'rat':5.5,'rat':3.5,'demo':5,'heoolo':5}
demo='rat' in e
print(e['demo']) #[]运算
print(demo) #in运算
print(e.keys()) #keys函数
print(e.values()) #values函数
print(e.items()) #items函数
输出结果:
5
True
dict_keys(['demo', 'rat', 'heoolo'])
dict_values([5, 3.5, 5])
dict_items([('demo', 5), ('rat', 3.5), ('heoolo', 5)])
六.列表解析式
列表解析式的基本语法格式如下:
[expression for item in iterable if condition]
其中,expression表示对item进行操作的表达式,item表示要迭代的元素,iterable表示可迭代对象,condition表示一个可选的过滤条件。例如:
squares = [x**2 for x in range(1, 11)]
print(squares)
输出结果为:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
七.python中的异常处理(与java中的异常处理几乎相同)
在Python中,异常处理是一种处理程序运行过程中出现错误的机制。当程序中出现错误时,可以通过捕获异常并处理它,使程序能够继续执行,而不会因为错误而崩溃。Python中的异常处理机制主要有以下几个关键字:
-
try: 表示需要进行异常处理的代码块,放在try后面的代码可能会抛出异常。
-
except: 表示捕获异常的代码块,放在except后面的代码会在try代码块中出现异常时执行。
-
else: 表示在try代码块没有出现异常时执行的代码块,一般用于处理try代码块执行成功的情况。
-
finally: 表示无论try代码块中是否出现异常,都会执行的代码块,一般用于清理资源或者关闭文件等操作。
下面是一个简单的示例,演示了如何使用try-except语句来捕获异常:
try:
a = int(input("请输入一个整数: "))
b = 10 / a
print(b)
except ValueError:
print("输入的不是整数")
except ZeroDivisionError:
print("除数不能为零")
except:
print("其他异常")
在上面的代码中,我将用户输入的字符串转换为整数,并且计算10除以该整数的结果。如果用户输入的不是整数或者除数为零,则会抛出ValueError或者ZeroDivisionError异常,我们可以使用try-except语句来捕获这些异常并进行处理。
在Python中,还可以使用raise关键字手动抛出异常,即在程序中主动引发异常。raise语句的语法格式如下:
raise exception(args)
其中,exception表示要抛出的异常类型,args表示异常的参数,可以为空。常见的异常类型包括ValueError、TypeError、IndexError等。下面是一个简单的示例,演示了如何使用raise语句抛出ValueError异常:
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零")
else:
return a / b
try:
result = divide(10, 0)
print(result)
except ValueError as e:
print(e)
在上面的代码中,定义了一个divide函数,用于计算两个数的商。如果除数为零,则会抛出ValueError异常,并且在主程序中使用try-except语句来捕获该异常并进行处理。
当调用divide函数时,由于除数为零,程序会抛出ValueError异常,并且输出异常的描述信息“除数不能为零”。