ここで問題が何をしたか列挙まずあり、そして第二に、なぜあなたはそれを使用している:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
は何がしたいことはこれです:the manualはそれを置くとして、enumerate
はこれに相当します。 enumerateの基本機能は、(a,b,c)
という形式の反復可能文字を、((start,a), (start+1,b), (start+2,c))
の形式の反復可能文字に変換することです。これは通常、インデックスとして使用される新しい列を追加します。あなたのコードでは、これはi
とj
です。シーケンスに含まれるエントリは変更されません。
私はあなたが意図した操作は、リストの一部のみを抽出し、スライスであると信じて:
for i, x in enumerate(A):
for y in A[i+1:]:
print(x*y)
それは(それはめったにありません)リストをコピーしないことが重要である場合、あなたはitertools.islice(A, i+1, len(A))
でA[i+1:]
を置き換えることができます。
このコードでは、外側のループでstart
引数が有効である可能性があります。我々は唯一のi+1
を使用している、いないi
は、私たちは同様にGoogleのインデックスとして、その値を使用することができます:
for nextindex, x in enumerate(A, 1):
for y in A[nextindex:]:
print(x*y)
おかげで、私は参照してください。間違いなくその機能が誰かにとって有用であることは間違いない。名前の選択は不幸です。 msgstr "" "列挙の開始パラメータは列挙が始まるインデックスに影響しません。" –