1.冒泡排序
def faet_sort(test: list) -> list:
"""冒泡排序"""
for i in range(len(test)):
for j in range(len(test)-i-1):
if test[j] > test[j + 1]:
test[j], test[j + 1] = test[j + 1], test[j]
return test
2.数组排序
def list_test(x: list) -> list:
"""基数在前, 偶数在后"""
x.sort()
rs1 = list()
rs2 = list()
for i in x:
if i % 2 == 1:
rs1.append(i)
else:
rs2.append(i)
rs1.extend(rs2)
return rs1
3. 字符串组合-递归
def test_string(x: str) -> list:
if len(x) == 1:
return [x]
# 用于存储所有排列结果的列表
all = []
# 对于字符串中的每个字符,依次将其作为首字符,然后递归地求解剩余字符的排列
for i in range(len(x)):
start_char = x[i]
end_char = x[:i] + x[i+1:]
sub_chars = test_string(end_char)
# 将首字符与剩余字符的排列组合起来
for sub_char in sub_chars:
all.append(start_char+sub_char)
return all
4. 迭代器、装饰器、生成器
迭代器(Iterator)是一种对象,可以通过迭代协议(即实现了 iter() 和 next() 方法)来遍历容器中的元素。迭代器可以逐个地访问容器中的元素,而不需要事先知道容器的大小。迭代器提供了一种统一的方式来遍历不同类型的数据结构,例如列表、字典、集合等。
装饰器(Decorator)是一种用于修改函数或类行为的特殊函数。装饰器可以在不修改原始函数或类定义的情况下,通过添加额外的功能来扩展其行为。装饰器常用于日志记录、性能分析、缓存等方面。装饰器使用了函数作为参数,并返回一个新的函数,这样可以方便地对函数进行包装和修改。
生成器(Generator)是一种特殊的函数,可以通过 yield 语句来生成一个序列的值。生成器可以逐个地产生值,而不需要一次性生成所有值,这样可以节省内存空间。生成器非常适合处理大量数据或者需要延迟计算的情况。
4.1 迭代器
class Book(object):
"""迭代器"""
def __init__(self):
self.book = ["java" , "python", "go", "vue"]
self.cur_index = -1
def __iter__(self):
return self
def __next__(self):
if self.cur_index == len(self.book) - 1:
raise StopIteration()
self.cur_index += 1
return self.book[self.cur_index]
"""
4.2 装饰器
def sum_time(func):
"""统计函数执行耗时"""
def wrapper(*args, **kwargs):
start_time = time()
result = func(*args, **kwargs)
end_time = time()
return f"func 函数结果: {result}\n执行的耗时为: {end_time-start_time}s"
return wrapper
@sum_time
def count(n):
"""装饰器"""
s = 0
for i in range(1, n+1):
s += i ** 2
return s
4.3 生成器
def number_generator(n):
i = 1
while i <= n:
yield i
i += 1
# 使用生成器
generator = number_generator(5)
for num in generator:
print(num)
标签:return,self,常见,list,算法,测试,time,test,def
From: https://www.cnblogs.com/test-works/p/17835501.html