枚举函数令人惊讶的行为

Col*_*nic 0 python

我使用枚举函数编写了一些Python代码.

A = [2,3,5,7]

for i, x in enumerate(A):
    # calculate product with each element to the right
    for j, y in enumerate(A, start=i+1):
        print(x*y)
Run Code Online (Sandbox Code Playgroud)

我预计它会计算出6种产品:2*3,2*5,2*7,3*5,3*7,5*7

相反,它计算了所有可能的16种产品.这是怎么回事?

dec*_*eze 7

所述start的参数enumerate仅影响产生元组(即,第一值ij)时,它不影响枚举开始的索引.正如手册所说,enumerate相当于:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1
Run Code Online (Sandbox Code Playgroud)

你想要的是这个:

for i, x in enumerate(A):
    for y in A[i + 1:]:
        print(x * y)
Run Code Online (Sandbox Code Playgroud)