この C++ コードの python と同等の実装は次のとおりです。
char x[10];
for (int i=0; i < 10; i++) {
    for (int j=i; j < 10; j++) {
        calc_something(x[i], x[j])
    }
}
ありがとうございました
この C++ コードの python と同等の実装は次のとおりです。
char x[10];
for (int i=0; i < 10; i++) {
    for (int j=i; j < 10; j++) {
        calc_something(x[i], x[j])
    }
}
ありがとうございました
これは、次のように簡単に実行できますitertools.combinations()。
import itertools
...
for i, j in itertools.combinations(x, 2):
    calc_something(i, j)
これにより、必要なものが得られます。具体的には、次の順序で要素を返します。
[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), 
 (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), 
 (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), 
 (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), 
 (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), 
 (5, 6), (5, 7), (5, 8), (5, 9), 
 (6, 7), (6, 8), (6, 9), 
 (7, 8), (7, 9), 
 (8, 9)]
インポートを使用しないいくつかのソリューションを次に示しますx。10 個の要素を含むリストとして既に宣言されていると仮定します。
for i in range(10):  # xrange in Python 2
    for j in range(i, 10):
        calc_something(x[i], x[j])
またはenumerate関数を使用して:
for i, el in enumerate(x):
    for j in x[i:]:
        calc_something(el, j)
最も簡単なのは次のとおりです。
    for i in range(1,10):
        for j in range(1,10):
           calc_something( list[i],list[j])
        (1,10) をハード コーディングする代わりに、 for i in list: for j in list:と言うことができます。