目录
1.生成器(两种格式)
yield:通过使用 yield
关键字,可以将一个函数转换为生成器函数,从而实现按需生成值的功能。生成器函数返回的迭代器对象可通过 next()
方法来获取产生的值。
def title5():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
b = title5()
for i in range(10):
print(next(b))
使用()实现:
list1 = (i for i in range(20))
print()list1
2.生成器和迭代器的区别
生成器(Generator)是一种特殊的函数,它可以在需要时生成 (yield) 数据,而不是次性计算并返回所有数据。生成器函数使用关键字ield“来定义数据生成的逻辑,每次调用生成器函数时,它会返回一个生成的值,并在下一次调用时从停止的地方继续执行。生成器可以用于处理大型或无限序列,因为它们一次只生成一个值,并且只在需要时进行计算和返回,从而节省内存和提高性能。
迭代器 (lterator) 是一个对象,用于提供一种顺序访问集合或序列数据的方法。迭代器对象通过实现’__iter__()和_next__)方法来定义。_iter__(方法返回选代器对象本身,并且’__next__方法返回序列中的下一个元素。当没有更多元素可供迭代时,’__next__(方法会引发StopIteration’异常。迭代器可以用于遍历数据集合,次一个元素地访问,而无需提前加载整个序列到内存中。
3.高阶函数和匿名函数结合使用:
# lst = [[5,8],[5,3],[3,1]]
# 1.对lst元素的第二个元素升序排列输出
# 2.对lst元素的第二个元素先升序排列,再以第一个元素升序排列输出
# 3.对lst元素的第二个元素降序排列输出
lst = [[5, 8], [5, 3], [3, 1]]
# 一题
head1 = sorted(lst, key=lambda x: x[1])
# print('head1-----', head1)
# 二题
head2 = sorted(lst, key=lambda x: (x[1], x[0]))
print('head2-----', head2)
# 三题
head3 = sorted(lst, key=lambda x: x[1], reverse=True)
# print('head3-----', head3)
4.对列表进行求和操作(使用高阶函数和sum函数)
from functools import reduce
scores = [75, 65, 80, 95, 50]
total = reduce(lambda x, y: x + y, scores)
print(total)
total2 = sum(scores)
print('total2-------', total2)
5.使用PIL库将数据打印到图片上
im = Image.open('img.png')
draw = ImageDraw.Draw(im)
text = str(f"{sorter_exel_start}\n{sorter_exel_end}")
# 设置字体、字体大小等等
font = ImageFont.truetype('simsun.ttc', 20)
# 添加水印
draw.text((0, 50), text, font=font)
im.show()
# 保存图片
im.save('watermark2.jpg')
# font = ImageFont.truetype("simsun.ttc", 40, encoding="unic") # 设置字体
6.将数据输出成csv格式
# 将文件排名信息写入csv格式文件
time = int(time.time())
path_name = path + r'\test_you_name_' + str(time) + '.csv'
for i, j in df.iterrows(): # 'a' 追加所有数据
with open(path_name, 'a', encoding="utf-8-sig") as file: # 使用utf-8-sig(这种编码)
file.write(j[0] + str(j[1]) + '\n')
print('成功')
7.找到计算机自带的所有字体格式
# C:/Windows/Fonts/simsun.ttc
8.获取时间戳
import time
t = time.time()
print t
# 1436428326.76
print int(t)
# 1436428326
9.python中小数保留个数
方法1
a = 1
b = 3
print(round(a/b,2))
方法2
a = 1
b = 3
print(format(float(a)/float(b), '.2f'))
方法3
a = 1
b = 3
print('%.2f'%(a/b))
10.将列表转还成字符串
使用join():
flexiple = ["Hire", "the", "top", "freelancers"]
print(" ".join(flexiple))
使用for循环
flexiple = ["Hire", "the", "top", 10, "python","freelancers"]
f1 = ""
for i in flexiple:
f1 += str(i)+ " "
print(f1)