Python:嵌套计数器

发布于 2024-10-02 07:51:05 字数 526 浏览 2 评论 0原文

对于我的客户来说,迭代多个计数器正在变成一项重复任务。

最直接的方法是这样的:

cntr1 = range(0,2)
cntr2 = range(0,5)
cntr3 = range(0,7)

for li in cntr1:
    for lj in cntr2:
        for lk in cntr3:
            print li, lj, lk

计数器的数量可以是 3 个以上,并且那些嵌套的 for 循环开始占用空间。

有没有Pythonic的方法来做这样的事情?

for li, lj, lk in mysteryfunc(cntr1, cntr2, cntr3):
    print li, lj, lk

我一直认为 itertools 中的某些东西符合这个要求,但我只是对 itertools 不够熟悉,无法理解这些选项。是否已有解决方案(例如 itertools),或者我需要推出自己的解决方案?

谢谢, j

For my customers, iterating through multiple counters is turning into a recurring task.

The most straightforward way would be something like this:

cntr1 = range(0,2)
cntr2 = range(0,5)
cntr3 = range(0,7)

for li in cntr1:
    for lj in cntr2:
        for lk in cntr3:
            print li, lj, lk

The number of counters can be anywhere from 3 on up and those nested for loops start taking up real estate.

Is there a Pythonic way to do something like this?

for li, lj, lk in mysteryfunc(cntr1, cntr2, cntr3):
    print li, lj, lk

I keep thinking that something in itertools would fit this bill, but I'm just not familiar enough with itertools to make sense of the options. Is there already a solution such as itertools, or do I need to roll my own?

Thanks,
j

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

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

发布评论

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

评论(1

爺獨霸怡葒院 2024-10-09 07:51:05

您想要的是 itertools.product

for li, lj, lk in itertools.product(cntr1, cntr2, cntr3):
    print li, lj, lk

将完全按照您的要求进行操作。该名称源自笛卡尔积的概念。

What you want is itertools.product

for li, lj, lk in itertools.product(cntr1, cntr2, cntr3):
    print li, lj, lk

Will do exactly what you are requesting. The name derives from the concept of a Cartesian product.

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