2016-11-18 5 views
0

値を注文し、私はこの思い付いた:リバースインデックスキーピングは、私は(オフトピック多分)機能をmod11を書き込もうとした

print [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'))[::-1])] 

>>[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E'), (5, 'F'), (6, 'G')] 

print [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'[::-1])))] 

>>[(6, 'A'), (5, 'B'), (4, 'C'), (3, 'D'), (2, 'E'), (1, 'F'), (0, 'G')] 

と私は少しそれを変更した場合

誰かがreversed()[::-1]について何が起こっているのか理解できますか?なぜインデックスは逆転しているのですか?

+1

'reverse(list(列挙( 'ABCDEFG'))[:: - 1])'は 'list(列挙( 'ABCDEFG'))'と同じです。 –

答えて

0

reversed[::-1]は、それらが適用されるリスト(または文字列)を逆にします。最初のケースで

  • 、あなたは[(0, 'G'), (1, 'F'), ...]を与え、逆に文字列を列挙し、"GFE..."を与えて、文字列を逆にして、[(6, 'A'), (5, 'B'), ...]で、その結果、再列挙を逆転。第2のケースで

    [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'[::-1])))] 
    
  • 、あなたは[(0, 'A'), (1, 'B'), ...]を与えて、文字列を列挙し、その後[::-1]でその列挙を逆にして、すぐに[(0, 'A'), (1, 'B'), ...]で、その結果、reverseで再度逆転。

    [(i,v) for i,v in reversed(list(enumerate('ABCDEFG'))[::-1])] 
    

したがって、最初のケースでは、文字列が二回反転し、一度だけインデックスは、第二の場合には文字列内の文字と指数の両方が、その結果、二回反転させながら、その元の注文。

+0

ありがとう!それは少し混乱しているようです – Onilol

0

ここのインデックスは特別なものだとは思わないでください。 enumerateは要素をタプル(index、element)に置き換えるだけです。あなたがそれをした後、他の関数はタプルのリストで動作し、それらが何を含んでいても関係ありません。言い換えれば、[::-1]の最初のケースでは、文字を逆順にします.2番目のケースでは、[::-1]でタプル(インデックス、文字)を逆にします。

関連する問題