连接生成器和项目

发布于 2024-08-25 15:16:58 字数 373 浏览 6 评论 0原文

我有一个生成器(数字)和一个值(数字)。我想迭代这些,就好像它们是一个序列一样:

i for i in tuple(my_generator) + (my_value,)

问题是,据我所知,这会创建 3 个元组,只是为了立即丢弃它们,并且还会复制“my_generator”中的项目一次。

更好的方法是:

def con(seq, item):
    for i in seq:
        yield seq
    yield item

i for i in con(my_generator, my_value)

但我想知道是否可以在没有该函数定义的情况下做到这一点

I have a generator (numbers) and a value (number). I would like to iterate over these as if they were one sequence:

i for i in tuple(my_generator) + (my_value,)

The problem is, as far as I undestand, this creates 3 tuples only to immediately discard them and also copies items in "my_generator" once.

Better approch would be:

def con(seq, item):
    for i in seq:
        yield seq
    yield item

i for i in con(my_generator, my_value)

But I was wondering whether it is possible to do it without that function definition

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤檠 2024-09-01 15:16:58

itertools.chain 将多个序列视为单一序列。

所以你可以将它用作:

import itertools

def my_generator():
    yield 1
    yield 2

for i in itertools.chain(my_generator(), [5]):
    print i

它将输出:

1
2
5

itertools.chain treats several sequences as a single sequence.

So you could use it as:

import itertools

def my_generator():
    yield 1
    yield 2

for i in itertools.chain(my_generator(), [5]):
    print i

which would output:

1
2
5
人间不值得 2024-09-01 15:16:58

尝试itertools.chain(*iterables)。文档在这里: http://docs.python.org/library/itertools.html# itertools.chain

Try itertools.chain(*iterables). Docs here: http://docs.python.org/library/itertools.html#itertools.chain

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文