python生成器和yield关键字怎么用
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了python生成器和yield关键字怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。下列代码用于先体验普通列表推
千家信息网最后更新 2026年10月31日python生成器和yield关键字怎么用
这篇文章主要介绍了python生成器和yield关键字怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
下列代码用于先体验普通列表推导式和生成器的差别:
# def add():# temp = ["姓名", "学号", "班级", "电话"]# dic = {}# lst = []# for item in temp:# inp = input("请输入{}:".format(item))# if inp == "exit":# print("成功退出输入")# return False# else:# dic[item] = inp# lst.append(dic)# print("添加成功")# return lst## def show(lst):# print("-"*30)# print("姓名\t\t学号\t\t班级\t\t电话")# print("=" * 30)# for i in range(len(lst)):# for val in lst[i].values():# print(val, "\t", end="")# print()# print("-" * 30)## def search(total_lst):# name = input("请输入您要查询的学生姓名:")# flag = False# tmp = []# for i in range(len(total_lst)):# if total_lst[i]["姓名"] == name:# tmp.append(total_lst[i])# show(tmp)# flag = True# if not flag:# print("抱歉,没有找到该学生")## if __name__ == '__main__':# total_lst = []# while True:# flag = add()# if flag:# total_lst = total_lst + flag# else:# break# show(total_lst)# search(total_lst)## def show(lst):# print("="*30)# print("{:^25s}".format("输出F1赛事车手积分榜"))# print("=" * 30)# print("{:<10s}".format("排名"), "{:<10s}".format("车手"), "{:<10s}".format("积分"))# for i in range(len(lst)):# print("{:0>2d}{:<9s}".format(i+1, ""), "{:<10s}".format(lst[i][0]), "{:<10d}".format(lst[i][1]))## if __name__ == '__main__':# data = 'lisi 380,jack 256,bob 385,rose 204,alex 212'# data = data.split(",")# dic = {}# da = []# for i in range(len(data)):# da.append(data[i].split())# for i in range(len(da)):# dic[da[i][0]] = int(da[i][1])# data2 = sorted(dic.items(), key=lambda kv: (kv[1], kv[0]), reverse=True)# show(data2)# class Fun:# def __init__(self):# print("Fun:__init__()")# def test(self):# print("Fun")## class InheritFun(Fun):# def __init__(self):# print("InheritedFun.__init__()")# super().__init__()# def test(self):# super().test()# print("InheritedFun")# a = InheritFun()# a.test()# from math import *# class Circle:# def __init__(self, radius=1):# self.radius = radius# def getPerimeter(self):# return 2 * self.radius * pi# def getArea(self):# return self.radius * self.radius * pi# def setRadius(self, radius):# self.radius = radius## a=Circle(10)# print("{:.1f},{:.2f}".format(a.getPerimeter(), a.getArea()))# from math import *# class Root:# def __init__(self, a, b, c):# self.a = a# self.b = b# self.c = c# def getDiscriminant(self):# return pow(self.b, 2)-4*self.a*self.c# def getRoot1(self):# return (-self.b+pow(pow(self.b, 2)-4*self.a*self.c, 0.5))/(2*self.a)# def getRoot2(self):# return (-self.b - pow(pow(self.b, 2) - 4 * self.a * self.c, 0.5)) / (2 * self.a)# inp = input("请输入a,b,c: ").split(" ")# inp = list(map(int, inp))# Root = Root(inp[0], inp[1], inp[2])# print("判别式为:{:.1f}; x1:{:.1f}; x2:{:.1f}".format(Root.getDiscriminant(), Root.getRoot1(), Root.getRoot2()))# class Stock:# def __init__(self, num, name, pre_price, now_price):# self.num = num# self.name = name# self.pre_price = pre_price# self.now_price = now_price# def getCode(self):# return self.num# def getName(self):# return self.name# def getPriceYesterday(self):# return self.pre_price# def getPriceToday(self):# return self.now_price# def getChangePercent(self):# return (self.now_price-self.pre_price)/self.pre_price## sCode = input() #输入代码# sName = input() #输入名称# priceYesterday = float(input()) #输入昨日价格# priceToday = float(input()) #输入今日价格# s = Stock(sCode,sName,priceYesterday,priceToday)# print("代码:",s.getCode())# print("名称:",s.getName())# print("昨日价格:%.2f\n今天价格:%.2f" % (s.getPriceYesterday(),s.getPriceToday()))# print("价格变化百分比:%.2f%%" % (s.getChangePercent()*100))# from math import pi## class Shape:# def __init__(self, name='None', area=None, perimeter=None):# self.name = name# self.area = area# self.perimeter = perimeter# def calArea(self):# return self.area# def calPerimeter(self):# return self.perimeter# def display(self):# print("名称:%s 面积:%.2f 周长:%.2f" % (self.name, self.area, self.perimeter))## class Rectangle(Shape):# def __init__(self, width, height):# super().__init__()# self.width = width# self.height = height# def calArea(self):# self.area = self.height*self.width# return self.area# def calPerimeter(self):# self.perimeter = (self.height+self.width)*2# return self.perimeter# def display(self):# self.name = "Rectangle"# Rectangle.calArea(self)# Rectangle.calPerimeter(self)# super(Rectangle, self).display()## class Triangle(Shape):# def __init__(self, bottom, height, edge1, edge2):# super().__init__()# self.bottom = bottom# self.height = height# self.edge1 = edge1# self.edge2 = edge2# def calArea(self):# self.area = (self.bottom*self.height) / 2# return self.area# def calPerimeter(self):# self.perimeter = self.bottom+self.edge2+self.edge1# return self.perimeter# def display(self):# self.name = "Triangle"# Triangle.calArea(self)# Triangle.calPerimeter(self)# super(Triangle, self).display()## class Circle(Shape):# def __init__(self, radius):# super(Circle, self).__init__()# self.radius = radius# def calArea(self):# self.area = pi*pow(self.radius, 2)# return self.area# def calPerimeter(self):# self.perimeter = 2*pi*self.radius# return self.perimeter# def display(self):# self.name = "Circle"# Circle.calArea(self)# Circle.calPerimeter(self)# super(Circle, self).display()## rectangle = Rectangle(2, 3)# rectangle.display()## triangle = Triangle(3,4,4,5)# triangle.display()## circle = Circle(radius=1)# circle.display()## lst = list(map(lambda x: int(x), ['1', '2', '3']))# print(lst)## class ListNode(object):# def __init__(self):# self.val = None# self.next = None## #尾插法# def creatlist_tail(lst):# L = ListNode() #头节点# first_node = L# for item in lst:# p = ListNode()# p.val = item# L.next = p# L = p# return first_node# #头插法# def creatlist_head(lst):# L = ListNode() #头节点# for item in lst:# p = ListNode()# p.val = item# p.next = L# L = p# return L# #打印linklist# def print_ll(ll):# while True:# if ll.val:# print(ll.val)# if ll.next==None: #尾插法停止点# break# elif not ll.next: #头插法停止点# break# ll = ll.next# #题解# class Solution:# def printListFromTailToHead(self, listNode):# # write code here# res = []# while(listNode):# res.append(listNode.val)# listNode=listNode.next# return res[3:0:-1]## if __name__ == "__main__":# lst = [1, 2, 3]# linklist = creatlist_tail(lst)# solution = Solution()# res = solution.printListFromTailToHead(linklist)# print(res)# -*- coding:utf-8 -*-# class Solution:# def __init__(self):# self.stack1 = []# self.stack2 = []# def push(self, node):# # write code here# self.stack1.append(node)# def pop(self):# # return xx# if self.stack2:# return self.stack2.pop()# else:# for i in range(len(self.stack1)):# self.stack2.append(self.stack1.pop())# return self.stack2.pop()## if __name__ == '__main__':# solution = Solution()# solution.push(1)# solution.push(2)# print(solution.pop())# print(solution.pop())# # binary search# def binary_search(lst, x):# lst.sort()# if len(lst) > 0:# pivot = len(lst) // 2# if lst[pivot] == x:# return True# elif lst[pivot] > x:# return binary_search(lst[:pivot], x)# elif lst[pivot] < x:# return binary_search(lst[pivot+1:], x)# return False## def binary_search3(lst, x):# lst.sort()# head = 0# tail = len(lst)# pivot = len(lst) // 2# while head <= tail:# if lst[pivot]>x:# tail = pivot# pivot = (head+tail) // 2# elif lst[pivot] int:# # write code here# dic = dict()# for i in range(len(numbers)):# if numbers[i] not in dic.keys():# dic[numbers[i]] = 1# else:# dic[numbers[i]] += 1# for key, value in dic.items():# if value > 1:# return key# return -1# if __name__ == '__main__':# solution = Solution()# print(solution.duplicate([2,3,1,0,2,5,3]))# class TreeNode:# def __init__(self, data=0):# self.val = data# self.left = None# self.right = None### class Solution:# def TreeDepth(self , pRoot: TreeNode) -> int:# # write code here# if pRoot is None:# return 0# count = 0# now_layer =[pRoot]# next_layer = []# while now_layer:# for i in now_layer:# if i.left:# next_layer.append(i.left)# if i.right:# next_layer.append(i.right)# count +=1# now_layer, next_layer = next_layer,[]# return count## if __name__ == '__main__':# inp = [1,2,3,4,5,'#',6,'#','#',7]# bt = TreeNode(1)## bt.left = TreeNode(2)# bt.right = TreeNode(3)## bt.left.left = TreeNode(4)# bt.left.right = TreeNode(5)# bt.right.left = None# bt.right.right = TreeNode(6)## bt.left.left.left = None# bt.left.left.right = None# bt.left.right.left = TreeNode(7)## solution = Solution()# print('深度:', solution.TreeDepth(bt))# class ListNode:# def __init__(self):# self.val = None# self.next = None## def creatlist_tail(lst):# L = ListNode()# first_node = L# for item in lst:# p = ListNode()# p.val = item# L.next = p# L = p# return first_node## def show(node:ListNode):# print(node.val,end=' ')# if node.next is not None:# node = show(node.next)## class Solution:# def ReverseList(self, head: ListNode) -> ListNode:# # write code here# res = None# while head:# nextnode = head.next# head.next = res# res = head# head = nextnode# return res## if __name__ == '__main__':# lst = [1,2,3]# linklist = creatlist_tail(lst)# show(linklist)# print()# solution = Solution()# show(solution.ReverseList(linklist))# 字典推导式# a = ['a', 'b', 'c']# b = [4, 5, 6]# dic = {k:v for k,v in zip(a,b)}# print(dic)#列表推导式# l = [i for i in range(10)]# print(l)#### # 生成器推导式# l1 = (i for i in range(10))# print(type(l1)) # 输出结果:# for i in l1:# print(i)# print('{pi:0>10.1f}'.format(pi=3.14159855))# print("'","center".center(40),"'")# print("center".center(40,'-'))# print("center".zfill(40))# print("center".ljust(40,'-'))# print("center".rjust(40,'-'))# s = "python is easy to learn, easy to use."# print(s.find('to',0,len(s)))# print(s.find('es'))# num = [1,2,3]# print("+".join(str(i) for i in num),"=",sum(num))# print(''.center(40,'-'))## import torch# from torch import nn# import numpy as np## # 一维BN# d1 = torch.rand([2,3,4]) #BCW# bn1 = nn.BatchNorm1d(3, momentum=1)# res = bn1(d1)# print(res.shape)## #二维BN(常用)# d2 = torch.rand([2,3,4,5]) #BCHW# bn2 = nn.BatchNorm2d(3, momentum=1)# res = bn2(d2)# print(res.shape)# print(bn2.running_mean) #3个chanel均值# print(bn2.running_var) #3个chanel方差### a = np.array(d2.tolist())# mean = np.mean(a,axis=(0,2,3))# print(mean)### def batchnorm_forward(x, gamma, beta, bn_param):# """# Forward pass for batch normalization## Input:# - x: Data of shape (N, D)# - gamma: Scale parameter of shape (D,)# - beta: Shift parameter of shape (D,)# - bn_param: Dictionary with the following keys:# - mode: 'train' or 'test'# - eps: Constant for numeric stability# - momentum: Constant for running mean / variance# - running_mean: Array of shape(D,) giving running mean of features# - running_var Array of shape(D,) giving running variance of features# Returns a tuple of:# - out: of shape (N, D)# - cache: A tuple of values needed in the backward pass# """# mode = bn_param['mode']# eps = bn_param.get('eps', 1e-5)# momentum = bn_param.get('momentum', 0.9)## N, D = x.shape# running_mean = bn_param.get('running_mean', np.zeros(D, dtype=x.dtype))# running_var = bn_param.get('running_var', np.zeros(D, dtype=x.dtype))## out, cache = None, None## if mode == 'train':# sample_mean = np.mean(x, axis=0) # np.mean([[1,2],[3,4]])->[2,3]# sample_var = np.var(x, axis=0)# out_ = (x - sample_mean) / np.sqrt(sample_var + eps)## running_mean = momentum * running_mean + (1 - momentum) * sample_mean# running_var = momentum * running_var + (1 - momentum) * sample_var## out = gamma * out_ + beta# cache = (out_, x, sample_var, sample_mean, eps, gamma, beta)# elif mode == 'test':# # scale = gamma / np.sqrt(running_var + eps)# # out = x * scale + (beta - running_mean * scale)# x_hat = (x - running_mean) / (np.sqrt(running_var + eps))# out = gamma * x_hat + beta# else:# raise ValueError('Invalid forward batchnorm mode "%s"' % mode)## # Store the updated running means back into bn_param# bn_param['running_mean'] = running_mean# bn_param['running_var'] = running_var## return out, cache## import numpy as np# import matplotlib.pyplot as plt### def py_cpu_nms(dets, thresh):## x1 = dets[:, 0]# y1 = dets[:, 1]# x2 = dets[:, 2]# y2 = dets[:, 3]# scores = dets[:, 4]# areas = (x2-x1+1)*(y2-y1+1)# res = []# index = scores.argsort()[::-1]# while index.size>0:# i = index[0]# res.append(i)# x11 = np.maximum(x1[i],x1[index[1:]])# y11 = np.maximum(y1[i], y1[index[1:]])# x22 = np.minimum(x2[i],x2[index[1:]])# y22 = np.minimum(y2[i],y2[index[1:]])## w = np.maximum(0,x22-x11+1)# h = np.maximum(0,y22-y11+1)## overlaps = w * h# iou = overlaps/(areas[i]+areas[index[1:]]-overlaps)## idx = np.where(iou<=thresh)[0]# index = index[idx+1]# print(res)# return res## def plot_boxs(box,c):# x1 = box[:, 0]# y1 = box[:, 1]# x2 = box[:, 2]# y2 = box[:, 3]## plt.plot([x1,x2],[y1,y1],c)# plt.plot([x1,x2],[y2,y2],c)# plt.plot([x1,x1],[y1,y2],c)# plt.plot([x2,x2],[y1,y2],c)## if __name__ == '__main__':# boxes = np.array([[100, 100, 210, 210, 0.72],# [250, 250, 420, 420, 0.8],# [220, 220, 320, 330, 0.92],# [230, 240, 325, 330, 0.81],# [220, 230, 315, 340, 0.9]])# plt.figure()# ax1 = plt.subplot(121)# ax2 = plt.subplot(122)# plt.sca(ax1)# plot_boxs(boxes,'k')## res = py_cpu_nms(boxes,0.7)# plt.sca(ax2)# plot_boxs(boxes[res],'r')# plt.show()# 2 3 3 4# 1 2 3# 4 5 6# 1 2 3 4# 5 6 7 8# 9 10 11 12# lst1, lst2 = [], []# n1,m1,n2,m2 = map(int,input().split())# for i in range(n1):# nums = list(map(int,input().split())) #输入一行数据# lst1.append(nums)# for i in range(n2):# nums = list(map(int,input().split()))# lst2.append(nums)# res = []# for i in range(n1):# res.append([])# for j in range(m2):# lst4 = []# lst3 = lst1[i]# for k in range(n2):# lst4.append(lst2[k][j])# res_num = sum(map(lambda x,y:x*y,lst3,lst4))# res[i].append(res_num)# print(res)## import numpy as np# print('numpy:',np.dot(lst1,lst2))#定义残差块# import torch# import torch.nn as nn# import torch.nn.functional as F## class ResBlock(nn.Module):# def __init__(self,inchanel,outchanel,stride=1):# super(ResBlock,self).__init__()# self.left = nn.Sequential(# nn.Conv2d(inchanel,outchanel,kernel_size=3,stride=stride,padding=1,bias=False),# nn.BatchNorm2d(outchanel),# nn.ReLU(inplace=True),# nn.Conv2d(outchanel,outchanel,kernel_size=3,stride=1,padding=1,bias=False),# nn.BatchNorm2d(outchanel)# )# self.shortcut = nn.Sequential()# if stride!=1 or inchanel!=outchanel:# self.shortcut = nn.Sequential(# nn.Conv2d(inchanel,outchanel,kernel_size=1,stride=stride,padding=1,bias=False),# nn.BatchNorm2d(outchanel)# )# def forward(self,x):# out = self.left(x)# out = out + self.shortcut(x)# out = F.relu(out)## return out## class ResNet(nn.Module):# def __init__(self,Resblock,num_classes=10):# super(ResNet,self).__init__()# self.inchanel = 64# self.conv1 = nn.Sequential(# nn.Conv2d(3,64,kernel_size=3,stride=1,padding=1,bias=False),# nn.BatchNorm2d(64),# nn.ReLU()# )# self.layer1 = self.make_layer(ResBlock,64,2,1)# self.layer2 = self.make_layer(ResBlock, 128, 2, 2)# self.layer3 = self.make_layer(ResBlock, 256, 2, 2)# self.layer4 = self.make_layer(ResBlock, 512, 2, 2)# self.fc = nn.Linear(512,num_classes)## def make_layer(self,ResBlock,channels,num_blocks,stride):# strides = [stride] + [1] * (num_blocks-1)# layers = []# for stride in strides:# layers.append(ResBlock(self.inchanel,channels,stride))# self.inchanel=channels# return nn.Sequential(*layers)# def forward(self,x):# out = self.conv1(x)# out = self.layer1(out)# out = self.layer2(out)# out = self.layer3(out)# out = self.layer4(out)# out = F.avg_pool2d(out,4)# out = out.view(out.size(0),-1)# out = self.fc(out)# return out# import torch# import torch.nn as nn# import torch.nn.functional as F## class ASPP(nn.Module):# def __init__(self,in_channel=512,depth=256):# super(ASPP,self).__init__()# self.mean = nn.AdaptiveAvgPool2d((1,1))# self.conv = nn.Conv2d(in_channel,depth,1,1)# self.atrous_block1 = nn.Conv2d(in_channel,depth,1,1)# self.atrous_block6 = nn.Conv2d(in_channel,depth,3,1,padding=6,dilation=6)# self.atrous_block12 = nn.Conv2d(in_channel,depth,3,1,padding=12,dilation=12)# self.atrous_block18 = nn.Conv2d(in_channel,depth,3,1,padding=18,dilation=18)# self.conv1x1_output = nn.Conv2d(depth*5,depth,1,1)# def forward(self,x):# size = x[2:]# pool_feat = self.mean(x)# pool_feat = self.conv(pool_feat)# pool_feat = F.upsample(pool_feat,size=size,mode='bilinear')## atrous_block1 = self.atrous_block1(x)# atrous_block6 = self.atrous_block6(x)# atrous_block12 = self.atrous_block12(x)# atrous_block18 = self.atrous_block18(x)## out = self.conv1x1_output(torch.cat([pool_feat,atrous_block1,atrous_block6,# atrous_block12,atrous_block18],dim=1))# return out#牛顿法求三次根# def sqrt(n):# k = n# while abs(k*k-n)>1e-6:# k = (k + n/k)/2# print(k)## def cube_root(n):# k = n# while abs(k*k*k-n)>1e-6:# k = k + (k*k*k-n)/3*k*k# print(k)# sqrt(2)# cube_root(8)# -*- coding:utf-8 -*-# import random## import numpy as np# from matplotlib import pyplot### class K_Means(object):# # k是分组数;tolerance'中心点误差';max_iter是迭代次数# def __init__(self, k=2, tolerance=0.0001, max_iter=300):# self.k_ = k# self.tolerance_ = tolerance# self.max_iter_ = max_iter## def fit(self, data):# self.centers_ = {}# for i in range(self.k_):# self.centers_[i] = data[random.randint(0,len(data))]# # print('center', self.centers_)# for i in range(self.max_iter_):# self.clf_ = {} #用于装归属到每个类中的点[k,len(data)]# for i in range(self.k_):# self.clf_[i] = []# # print("质点:",self.centers_)# for feature in data:# distances = [] #装中心点到每个点的距离[k]# for center in self.centers_:# # 欧拉距离# distances.append(np.linalg.norm(feature - self.centers_[center]))# classification = distances.index(min(distances))# self.clf_[classification].append(feature)## # print("分组情况:",self.clf_)# prev_centers = dict(self.centers_)## for c in self.clf_:# self.centers_[c] = np.average(self.clf_[c], axis=0)## # '中心点'是否在误差范围# optimized = True# for center in self.centers_:# org_centers = prev_centers[center]# cur_centers = self.centers_[center]# if np.sum((cur_centers - org_centers) / org_centers * 100.0) > self.tolerance_:# optimized = False# if optimized:# break## def predict(self, p_data):# distances = [np.linalg.norm(p_data - self.centers_[center]) for center in self.centers_]# index = distances.index(min(distances))# return index### if __name__ == '__main__':# x = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])# k_means = K_Means(k=2)# k_means.fit(x)# for center in k_means.centers_:# pyplot.scatter(k_means.centers_[center][0], k_means.centers_[center][1], marker='*', s=150)## for cat in k_means.clf_:# for point in k_means.clf_[cat]:# pyplot.scatter(point[0], point[1], c=('r' if cat == 0 else 'b'))## predict = [[2, 1], [6, 9]]# for feature in predict:# cat = k_means.predict(feature)# pyplot.scatter(feature[0], feature[1], c=('r' if cat == 0 else 'b'), marker='x')## pyplot.show()# def pred(key, value):# if key == 'math':# return value>=40# else:# return value>=60# def func(dic,pred):# # temp = []# # for item in dic:# # if not pred(item,dic[item]):# # temp.append(item)# # for item in temp:# # del dic[item]# # return dic## for k in list(dic.keys()):# if dic[k]<60:# del dic[k]# return dic## if __name__ == '__main__':# dic={'math':66,'c':78,'c++':59,'python':55}# dic = func(dic,pred)# print(dic)## class TreeNode:# def __init__(self):# self.left = None# self.right = None# self.data = None## def insert(tree,x):# temp = TreeNode()# temp.data = x# if tree.data>x:# if tree.left == None:# tree.left = temp# else:# insert(tree.left,x)# else:# if tree.right == None:# tree.right = temp# else:# insert(tree.right,x)## def print_tree(node):# if node is None:# return 0# print_tree(node.left)# print(node.data)# print_tree(node.right)### def sort(lst):# tree = TreeNode()# tree.data = lst[0]# for i in range(1, len(lst)):# insert(tree,lst[i])# print_tree(tree)## sort([5,2,4])# from collections import Iterable, Iterator### class Person(object):# """定义一个人类"""## def __init__(self):# self.name = list()# self.name_num = 0## def add(self, name):# self.name.append(name)## def __iter__(self):# return self# def __next__(self):# # 记忆性返回数据# if self.name_num < len(self.name):# ret = self.name[self.name_num]# self.name_num += 1# return ret# else:# raise StopIteration## person1 = Person()# person1.add("张三")# person1.add("李四")# person1.add("王五")## print("判断是否是可迭代的对象:", isinstance(person1, Iterable))# print("判断是否是迭代器:", isinstance(person1,Iterator))# for name in person1:# print(name)# nums = []# a = 0# b = 1# i = 0# while i < 10:# nums.append(a)# a,b = b,a+b# i += 1# for i in nums:# print(i)## class Fb():# def __init__(self):# self.a = 0# self.b = 1# self.i = 0# def __iter__(self):# return self# def __next__(self):# res = self.a# if self.i<10:# self.a,self.b = self.b,self.a+self.b# self.i += 1# return res# else:# raise StopIteration## fb = Fb()# for i in fb:# print(i)import timedef get_time(func): def wraper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print("Spend:", end_time - start_time) return result return wraper@get_timedef _list(n): l = [i*i*i for i in range(n)]@get_timedef _generator(n): ge = (i*i*i for i in range(n))@get_timedef _list_print(l1): for i in l1: print(end='')@get_timedef _ge_print(ge): for i in ge: print(end='')n = 100000print('list 生成耗时:')_list(n)print('生成器 生成耗时:')_generator(n)l1 = [i*i*i for i in range(n)]ge = (i*i*i for i in range(n))# print(l1)# print(ge)print('list遍历耗时:')_list_print(l1)print('生成器遍历耗时:')_ge_print(ge) 结论:
生成速度:生成器>列表
for_in_循环遍历:1、速度方面:列表>生成器;2、内存占用方面:列表<生成器
总的来说,生成器就是用于降低内存消耗的。
感谢你能够认真阅读完这篇文章,希望小编分享的"python生成器和yield关键字怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
生成
生成器
姓名
篇文章
输入
迭代
关键
关键字
成功
中心点
内存
学号
学生
方面
班级
电话
误差
车手
速度
分组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网加科技
互联网科技图片
云信互联网科技有限公司
中关村互联网科技集团
鸠鸠互联网科技
互联网科技小贷
互联网科技素材视频竖屏
互联网科技股午盘股票涨跌
恒生科技互联网指数分析
中国科技互联网公司收入
北京华百购互联网科技有限公司
湖北码尼互联网科技有限公司电话
广州市恰铎互联网科技有限公司
中国互联网有什么科技
江苏苏星互联网科技有限公司
江苏互联网智能科技软件
图游互联网科技
易企秀互联网科技是做什么的
悟空问答互联网科技
博彦科技互联网金融
互联网养老 桔豆科技
互联网汽车科技小镇
广州优美互联网科技
互联网科技寓意
宁夏众和广鑫互联网科技有限公司
天津腾达互联网科技有限公司
畅思互联网科技
卓翼科技产业互联网合作
广州有谷有贝互联网科技有限公司