如何在python中实现C++风格的(indexed)嵌套循环?

2024-04-26 23:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中什么是等效的?在

for (i=0; i<n; i++)
    for (j=i+1; j<n; j++)
        //do stuff with A[i], A[j]

或者从某种意义上说,如下所示。它还应该在完成每一轮循环时从A中移除元素。在

^{pr2}$

有没有一种python方法可以不使用enumerate()来完成此操作?在

编辑:

很抱歉描述不好。在

  1. 在第一个示例中,我的意思是只将I&j用作索引。他们的价值观无关紧要。它只是后者的一个粗略的c++等价物。

  2. 外循环执行n次。每次外循环迭代执行(n-1),(n-2)…0次内循环。

也许这会有帮助(伪代码):

function next_iteration(list):
    head = first element
    tail = remaining elements #list
    each element in tail interacts with head one by one
    next_iteration(tail)

注:上面所有的代码示例都是伪代码。我想表达一些在我脑海里仍然模糊的东西。在


Tags: 代码元素示例forwithelementdoone
3条回答

我把你的要求解释成

How can I iterate over all pairs of distinct elements of a container?

回答:

>>> x = {1,2,3}
>>> import itertools
>>> for a, b in itertools.permutations(x, 2):
...     print a, b
... 
1 2
1 3
2 1
2 3
3 1
3 2

编辑:如果您不想同时使用(a,b)和{},只需使用itertools.combinations。在

怎么样:

for i in range(0,n):
    for j in range (i+1,n):
    # do stuff

既然你的两个问题不同,下面是你第二个问题的解决方案:

for i in xrange(len(A)):
    for j in xrange(len(A)):
        if i != j:
            do_stuff(A[i], A[j])

或者使用itertools(我认为使用附带的电池非常像Python公司名称:

^{pr2}$

这适用于A中2个不同元素的所有组合。如果要存储结果,只需使用:

[do_stuff(a, b) for a, b in itertools.permutations(A, 2)]

相关问题 更多 >