Pythonic循环遍历所有列表对的方法

时间:2017-10-26 15:34:11

标签: python

我真的很惊讶我无法在任何地方找到它。 在大多数语言中,遍历列表中的所有可能对看起来像这样:

for (i = 0; i < length; i++) 
    for (j = i + 1; j < length; j++)
         do stuff

但是在python中,你必须这样做:

for i in range (len(clusters)):
    for j in range (i+1, len(clusters)):
        do stuff

我觉得这不是非常pythonic。最好的方法是什么?

1 个答案:

答案 0 :(得分:4)

您可以使用combinations()

from itertools import combinations
combinations('ABCD', 2) --> AB AC AD BC BD CD

Python不鼓励&#34; C风格&#34;循环,因为如果你适应它,你实际上几乎不需要它们。您可以使用emumerate()轻松地使用纯python来获取索引和一些切片:

lst = 'ABCD'
for index, first in enumerate(lst):
    for second in lst[index+1:]:
        print(first, second)