避免Python中的多个嵌套for循环

2 python for-loop nested-loops

当一个嵌套 for 循环的范围达到外层 for 循环的当前迭代时,如何避免多个嵌套 for 循环?例如,考虑以下代码:该程序从列表 arr 返回一个三元组,使得arr[i] - arr[j] = arr[j] - arr[k] = di<j<k

d =3
arr = [1, 2, 4, 5, 7, 8, 10]
list1 = []

for biggest in range(0, len(arr)):
    for bigger in range(0, biggest):
        for big in range(0, bigger):
            if abs(arr[big] - arr[bigger]) == d and abs(arr[bigger] - arr[biggest]) == d:
                list1.append([arr[big], arr[bigger], arr[biggest]])
print(list1))
Run Code Online (Sandbox Code Playgroud)

除了使用多个嵌套循环之外,还有其他选择吗?

Ale*_*all 5

您可以将三个循环替换为:

from itertools import combinations

for big, bigger, biggest in combinations(range(0, len(arr)), 3):
Run Code Online (Sandbox Code Playgroud)

您可以将所有代码替换为:

print([t for t in combinations(arr, 3)
       if t[2] - t[1] == t[1] - t[0] == d])
Run Code Online (Sandbox Code Playgroud)