首页 > 编程知识 正文

Python编写删除列表相同元素(python控制结构三迭代器)

时间:2023-05-06 10:47:21 阅读:115 作者:673

Python语言

列表与生成式

1.名单写死了,固定了。

a=[0,1,2,3,4,5,6,7,8,9]

印刷品

2.列表生成将使代码更加简洁。

a=[]

对于范围(10):内的I

a .追加(i*3)

印刷品

3.列表和列表生成的运行结果如下:

列出运行结果:[0,1,2,3,4,5,6,7,8,9]

生成的操作结果:[0,3,6,9,12,15,18,21,24,27]

00-1010我们可以通过列表生成直接创建列表。但是由于内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表不仅会占用大量的存储空间,而且如果我们只需要访问前几个元素,那么后面大部分元素所占用的空间就会被浪费掉。

因此,如果列表元素可以按照某种算法计算,我们是否可以在循环中连续计算后续元素?这样就不需要创建一个完整的列表,节省了很多空间。在Python中,这种边循环边计算的机制称为生成器。

00-1010在一般函数中使用yield关键字可以实现最简单的生成器,然后函数就变成了生成器函数。Yield和return返回相同的值,但不同的是,当return返回时,函数状态将终止,而yield将保存当前函数的执行状态,返回后,函数将返回到之前保存的状态并继续执行。

00-1010生成器函数包含一个或多个产量。当调用生成器函数时,函数将返回一个对象,但不会立即向下执行。像__iter__()和__next__()这样的方法是自动实现的,因此我们可以通过next()方法迭代对象。一旦函数被放弃,函数将被挂起。控制权返回给调用者的局部变量及其状态会被保存,直到下一个调用函数终止,StopIteraion会自动抛出

什么是生成器

,只记住当前位置,生成器只保留一个值,下一个之后最后一个值会丢失。

下一个方法只有一个,

# b # __下一个_ _()

如何创建一个生成器

著名的斐波那契数列,除了第一个和第二个数字,任何数字都可以通过将前两个数字相加得到:

1,1,2,3,5,8,13,21,34,

斐波那契序列不能通过列表生成来编写,但可以通过函数轻松打印出来:

def fib(最大):

n,a,b=0,0,1

而nmax:

打印(b)

a,b=b,a b

n=n 1

返回“完成”

f=纤维(10)

运行结果:

一个

一个

2

13

21

34

55

要把它变成发电机,只需把打印(b)改为Yiled B即可。

def fib(最大):

n,a,b=0,0,1

而nmax:

#打印(b)

产量b

a,b=b,a b

#a=b a=1,b=2,a=b,a=2

#b=a b b=2 2=4

n=n 1

当返回“完成”#异常时打印的消息

操作结果:使用next取值。

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

打印(f.__next__()

不能打印使用强制循环返回的下行

对于f:中的I

打印(一)

生成器函数与一般函数的不同

追溯(最近一次通话最后一次):

模块中的文件' D:pythonindex.py ',第85行

打印(f.__next__()

停止迭代:完成

生成器如何节省资源?

g=fib(6)

#异常处理代码

而True:

尝试:

x=下一个(g)

打印(' g: ',x)

除了停止迭代为e:

打印('生成器返回值: ',即值)

最终操作结果:

g: 1

g: 1

g: 2

g: 3

g: 5

g: 8

发电机返回值:完成

===开始循环===

0.2s内完成]

00-1010更容易使用,代码更少,内存使用更高效。例如,当创建一个列表时,所有的内存空间都被分配,生成器只在需要的时候使用它,更像是一个代表无限流的记录。如果我们想要读取和使用的内容远远超过了内存,但是我们需要处理流中的所有内容,那么生成器就是一个很好的选择,比如它可以将当前的处理状态返回给生成器,因为它可以保存状态,那么下一次直接处理就足够了。管道发生器。假设我们有快餐记录。这个记录的第四行记录的是过去五年每小时卖出的食物数量,我们需要把所有的数量加在一起,才能算出过去五年卖出的总数量。假设所有数据都是字符串,不可用的数字标记为n/a,那么我们可以用以下方式处理:

著名的斐波那契数列

。感谢阅读。欢迎在评论区发表不同意见。如有其他问题,请在评论区留言。喜欢的话,请多关注转发和支持。

作者:埃里克_吕

来源:CSDN

原文:https://blog.csdn.net/qq_35976351/article/details/79680121

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。