Python非重复循环

时间:2012-07-16 14:50:03

标签: python loops

我想将5点(A,B,C,D,E)与线路连接起来。

使用For循环很容易,但是会有重复连接(A-B = B-A)。

任何人都有想法阻止它发生吗?

2 个答案:

答案 0 :(得分:8)

使用itertools.combinations

import itertools as it
points = ('A', 'B', 'C', 'D', 'E')
for pt1, pt2 in it.combinations(points, 2):
    print '{0}-{1}'.format(pt1, pt2)

打印

A-B
A-C
A-D
A-E
B-C
B-D
B-E
C-D
C-E
D-E

答案 1 :(得分:4)

您可以修改内部循环以仅迭代其余项目:

points = ['A', 'B', 'C', 'D', 'E']
for i, x in enumerate(points):
    for y in points[i + 1:]:
        print x, y