python生成器和yield关键字怎么用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了python生成器和yield关键字怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。下列代码用于先体验普通列表推
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
本地数据库地址怎么设置
扬州车吧网络技术
软件开发原理阐述
中国居民网络安全提供商简介
关于垃圾的情况数据库
数据库登录验证
软件开发技术架构示例
客户机怎么使用服务器
联想电脑在哪里找服务器管理
用网络安全模式能下载程序吗
网络技术的应用情况
高中网络技术基础测试题
搭建个人塔式服务器
电脑网络技术公司经营范围
深圳市智讯软件开发有限公司
邮件接收服务器怎么填
大型小程序软件开发
论网络安全新技术
十五项互联网领先科技成果
惠普380服务器参数
软件开发人员怎么评职称
软件开发的假定约束
南阳师范软件开发课表
取消代理服务器
数据库的底层运行原理
计算机与网络技术专业代码
网络安全和信息化领导办公室
安徽交通管理软件开发
软件开发评审途径有什么意思
福建省委网络安全专家