定义函数时不确定定义多少个参数,在参数名称前添加*号,表示这个位置的参数可以是多个。
Example:
1 |
def result(grade,*age): |
结果为:
年级:6
年龄:7,8,9
直接打印age:
1 |
def result(grade,*age): |
结果为:
年级: 6
年龄: 7 8 9
(7, 8, 9)
age被转换为了元组。
总结
函数中的参数如果前面加,这个参数可以接收多个,并最后都转化为元组。
如果在参数前面加两个,会将参数转化为字典。调用时要用key-value形式。即:
1 |
def result(grade,**age): |
结果为:
年级: 6
年龄: {‘age1’: 7, ‘age2’: 8, ‘age3’: 9}
字符串
Python中,string是不可变类型的。
常用转义字符
单引号:'
双引号:'‘
换行:n
tab:t
回车:r
退格:b
如果需要显示字符n,不想换行,在
前面加r:r'我不换行n我没换行'
字符串拼接
用+号:str = str1+str2
用+=性能更好:str1 += str2
用生成相同的字符串:str1 = ‘a’; print(str13) 结果:aaa
字符串格式化
%s:字符格式化
%d:整型格式化
eg.print(‘我叫%s,今年%d岁’ % (‘Cliare’,20))
还有一种format方法,使用{}来占位:
print(‘我叫{0},今年{1}岁’.format(‘Claire’,20))
或
print(‘我叫{name},今年{age}岁’.format(name=’Claire’,age=20))
字符串常用函数
查找
eg. strl = ‘今天天气很好!’
strl.find(‘今天’) #返回“今”的索引
替换
eg. strl = ‘今天天气很好!’
strl.replace(‘今天’,’昨天’)
分割
eg. strl = ‘2019-9-22 12:50:33’
strl.split(‘ ‘) #用空格分割
strl.split(‘ ‘)[0].split(‘-‘) #对日期用-分割
strl.split(‘ ‘)[1].split(‘:’) #对时间用:分割
去掉空格
strl.strip()
大小写转换
大转小:strl.lower()
小转大:strl.upper()
判断以什么开头和结尾
strl.startwith(‘今天’)
strl.endwith(‘很好’)
返回True/False
链表
链表由节点组成,是递归的数据结构,保持数据之间的逻辑顺序,但存储弓箭不必按照顺序存储。
每个节点有两部分,左边是值域,用来存放用户数据;右边是指针域,存放指向下一个元素的指针。
最后一个节点的指针域为None值。
基本操作见csdn
##一些基操
- 设置一个快指针(步长2),一个慢指针(步长1),有环的话,slow和fast总会相遇,相遇时的循环次数等于环的长度。
- 快慢指针相遇点到环入口的距离 = 链表起始点到环入口的距离。
时间复杂度
查找
查找 | 平均时间复杂度 | 查找条件 | 算法描述 |
---|---|---|---|
顺序查找 | O(n) | 有序或者无序队列 | 按顺序比较每个元素,直到找到关键字为止。 |
二分查找 | O(logn) | 有序数组 | 查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。 |
二叉排序树查找 | O(logn) | 二叉排序树 | 在二叉查找树b中查找x的过程为:1. 若b是空树,则搜索失败;2. 若x等于b的根节点的数据域之值,则查找成功;3. 若x小于b的根节点的数据域之值,则搜索左子树;4. 查找右子树。 |
哈希表法(散列表) | O(1) | 先创建哈希表 | 根据键值方式(Key value)进行查找,通过散列函数,定位数据元素。 |
分块查找 | O(logn) | 无序或有序队列 | 将n个数据元素”按块有序”划分为m块(m ≤ n)。每一块中的结点不必有序,但块与块之间必须”按块有序”;即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2块中任一元素又都必须小于第3块中的任一元素,……。然后使用二分查找及顺序查找。 |
排序
排序 | 最差时间分析 | 平均时间复杂度 | 稳定度 | 空间复杂度 |
---|---|---|---|---|
冒泡排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
插入排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
选择排序 | O(n^2) | O(n^2) | 稳定 | O(1) |
二叉树排序 | O(n^2) | O(n*log2n) | 不稳定 | O(n) |
快速排序 | O(n^2) | O(n*log2n) | 不稳定 | O(log2n)~0(n) |
堆排序 | O(n*log2n) | O(n*log2n) | 不稳定 | O(1) |
希尔排序 | O | O | 不稳定 | O(1) |
近期评论