首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生成器中迭代输入()

在生成器中迭代输入()
EN

Stack Overflow用户
提问于 2022-07-05 12:57:00
回答 1查看 50关注 0票数 0

现在我正在学习python课程,但是那里的任务中的数据是作为输入形成的,而不是函数的参数,例如在代码战中。

要编写生成器,我必须使用不能迭代的输入。原来这段代码是:

代码语言:javascript
复制
dots = [input() for x in range(int(input()))]
parsedDots = [dot for dot in dots if not '0' in dot]

(这段代码应该列出一个列表,其中只有没有零坐标的输入())

能把这两台发电机合并成一台吗?

输入数据示例:

代码语言:javascript
复制
4
0 -1
1 2
0 9
-9 -5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 13:06:16

您可以使用the walrus operator, :=在3.8+中组合它们:

代码语言:javascript
复制
parsedDots = [inp for _ in range(int(input())) if '0' not in (inp := input())]

在3.8之前,您所能做的最好是将原始的列表理解(急切,物化了一个list)转换为生成器表达式(懒惰),以便在过滤掉垃圾之后才能生成实际的list

代码语言:javascript
复制
dots = (input() for _ in range(int(input())))  # Parens instead of square brackets makes genexpr
parsedDots = [dot for dot in dots if '0' not in dot]

这比walrus解决方案的开销略高,但峰值内存使用量没有增加任何意义,而且自从引入生成器表达式(2.4ish?)以来,它适用于Python的每个版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72869831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档