1、冒泡排序和快速排序
def maopaopaixu(a): for i in range(len(a) - 1): # 这个循环负责设置冒泡排序进行的次数 # 第一次排就能把最大的排到最后面,最后一个就不参与排序了 # 第二次排需要的次数-1,能把第二大的排到倒数第二,倒数第二个就不参与排序了 # 同理第三次、第四次 for j in range(len(a) - i - 1): # j为列表下标 if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] return a def quick_sort(data): """快速排序""" if len(data) >= 2: # 递归入口及出口 mid = data[len(data) // 2] # 选取基准值,也可以选取第一个或最后一个元素(//取整除 - 返回商的整数部分(向下取整)) left, right = [], [] # 定义基准值左右两侧的列表 data.remove(mid) # 从原始数组中移除基准值,如果不移除,list含有相同元素时则会陷入无限递归 for num in data: if num >= mid: right.append(num) else: left.append(num) return quick_sort(left) + [mid] + quick_sort(right) # return quick_sort(left) + quick_sort(right) else: return data if __name__ == ‘__main__‘: a = [2, 1, 4, 5, 10, 11, 21, 34, 6, 6] print(maopaopaixu(a)) print(quick_sort(a))
2、阶乘
def funa(a: int): if a < 1: print("数据错误") return if a == 1: return 1 if a > 1: return a * funa(a - 1) def funb(a: int): l = 1 for i in range(1, a + 1): l = l * i return l if __name__ == ‘__main__‘: print(funa(6)) print(funb(6))
3、反转
def fanzhuan1(a): if isinstance(a, str): l = ‘‘ for i in range(len(a)): l = l + a[-(i + 1)] return l if isinstance(a, list): l = [] for i in range(len(a)): l.append(a[-(i + 1)]) return l def fanzhuan2(a): return a[::-1] if __name__ == ‘__main__‘: a = "ksjdkjsd" print(fanzhuan1(a)) print(fanzhuan2(a)) a = [1, 2, 3, 4, 5] print(fanzhuan1(a)) print(fanzhuan2(a))
4、数组移除元素,为什么-6没有移除我也不知道原因
def dellist1(a: list): for i in a: if i < 0: a.remove(i) return a def dellist2(a: list): return [i for i in a if i > 0] if __name__ == ‘__main__‘: a = [1, 3, -3, 5, -4, -6, 10] print(dellist1(a)) # [1, 3, 5, -6, 10] print(dellist1(a)) # [1, 3, 5, 10]
5、字符串统计
str001 = "my love is you do you konw it ? do you love me ?" list001 = str001.split(‘ ‘) print(list001) print(str001.count(‘ ‘)) print("单词的总数为%s" % (len(list001))) # 14 print("空格的总数为%s" % str001.count(‘ ‘)) # 13 print("you的总数为%s" % (list001.count(‘you‘))) # 3
原文:https://www.cnblogs.com/yinwenbin/p/14532809.html