现在我正在学习python课程,但是那里的任务中的数据是作为输入形成的,而不是函数的参数,例如在代码战中。
要编写生成器,我必须使用不能迭代的输入。原来这段代码是:
dots = [input() for x in range(int(input()))]
parsedDots = [dot for dot in dots if not '0' in dot](这段代码应该列出一个列表,其中只有没有零坐标的输入())
能把这两台发电机合并成一台吗?
输入数据示例:
4
0 -1
1 2
0 9
-9 -5发布于 2022-07-05 13:06:16
您可以使用the walrus operator, :=在3.8+中组合它们:
parsedDots = [inp for _ in range(int(input())) if '0' not in (inp := input())]在3.8之前,您所能做的最好是将原始的列表理解(急切,物化了一个list)转换为生成器表达式(懒惰),以便在过滤掉垃圾之后才能生成实际的list:
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的每个版本。
https://stackoverflow.com/questions/72869831
复制相似问题