如何只在列表中循环一次关系?

Hob*_*use 1 python

我有一个用户列表:

users = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我想计算它们之间的关系:

score = compatibility( user[0], user[1] )
Run Code Online (Sandbox Code Playgroud)

如何循环用户以便用户之间的关系只计算一次?

Sil*_*ost 11

如果您只关心有序关系,您可以执行以下操作:

>>> for i, u in enumerate(users[1:]):
    print(users[i], u)           # or do something else


1 2
2 3
3 4
4 5
Run Code Online (Sandbox Code Playgroud)

如果您需要所有组合,您应该使用itertools.combinations:

>>> import itertools
>>> for i in itertools.combinations(users, 2):
    print(*i)

1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
Run Code Online (Sandbox Code Playgroud)