web-dev-qa-db-ja.com

Pythonでインデックスを使って逆方向にループしますか?

私は100から0までループしようとしています。どうやってこれをPythonでできますか?

for i in range (100,0)は動作しません。

229
Joan Venge

range(100,-1,-1)を試してみてください。3番目の引数は使用する増分値です(文書化された ここ )。

331
0x6adb015

私の意見では、これが最も読みやすいです。

for i in reversed(xrange(101)):
    print i,
175
Triptych
for i in range(100, -1, -1)

そしてもう少し長い(そして遅い)解決策:

for i in reversed(range(101))

for i in range(101)[::-1]
29
kcwu

一般にPythonでは、後ろから負の添字を使うことができます。

numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
    print numbers[-i - 1]

結果:

50
40
30
20
10
15
Blixt

あなたのコードがうまくいかなかった理由

for i in range (100, 0)は問題ありませんが、を除いて

3番目のパラメーター(step)は、デフォルトで+1です。そのため、後退するには、range()に3番目のパラメータを-1として指定する必要があります。

for i in range(100, -1, -1):
    print(i)

注:これは、出力に100&0を含みます。

複数の方法があります。

より良い方法

Pythonic方式の場合は、 PEP 0322 を確認してください。

これは100から0(100と0を含む)までを印刷するPython 3 Pythonicの例です。

for i in reversed(range(101)):
    print(i)
5
mythicalcoder

別の解決策:

z = 10
for x in range (z):
   y = z-x
   print y

結果:

10
9
8
7
6
5
4
3
2
1

ヒント:この方法を使用してリスト内のインデックスをカウントバックする場合は、リストインデックスが0から始まるので、 'y'の値から-1を求めます。

5
Andy T.

あなたの問題を解決するための簡単な答えはこのようになります:

for i in range(100):
    k = 100 - i
    print(k)
3
enoted

短くて甘い。これは、codecademyコースを実施する際の私のソリューションでした。文字列を回転順に出力します。

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    
2
Mike

for var in range(10,-1,-1)は動作します

1
user2220115

100 - iここでi in range( 0, 101 )の場合、いつでも範囲を広げて変数から減算することができます。

for i in range( 0, 101 ):
    print 100 - i
1
pnoob

ああ、質問を間違って読んでも大丈夫です、私はそれが配列の中で逆方向に進んでいるのでしょうか?もしそうなら、私はこれがあります:

array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]


counter = 0   

for loop in range(len(array)):
    if loop <= len(array):
        counter = -1
        reverseEngineering = loop + counter
        print(array[reverseEngineering])
0
darrell

私はこれをcodeacademy演習の1つで試しました(reverse nor :: -1を使用せずに文字列内のcharsを反転します)

def reverse(text):
    chars= []
    l = len(text)
    last = l-1
    for i in range (l):
        chars.append(text[last])
        last-=1

    result= ""   
    for c in chars:
        result += c
    return result
print reverse('hola')
0
Tabula Rasa

2つのリストを同時に逆方向にループ処理したかったので、負のインデックスが必要でした。これが私の解決策です:

a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
    print(i, a[i])

結果:

-1 2
-2 5
-3 4
-4 3
-5 1
0