2012-03-01 16 views
1

最後の項目から始めて最初の項目で終わる文字列(またはリスト)をループするようにPythonに指示する「pyononicな方法」はありますか?例えばPython:最後の項目からループを開始し、最初の項目から終了します

単語Hans私はPythonがsnaH

として、それを読んだり、ソートしたい私は、次のpyhon伝えることができる方法次に、:今、あなたがた文字列から、「」それはOKを見つけるための検索、もしあなたは 'n'が 'a'の後に来るのを見つけます。 'n'の後に文字の元の順序を印刷する

答えて

0

この状況についてはどうですか?また

>>> s = "Hans" 
>>> for c in s[::-1]: 
     print c 

s 
n 
a 
H 

あなたが最初の逆だ新しい文字列をしたい場合は、この方法を試してください。

>>> "".join(reversed("Hans")) 
'snaH' 
0

確かに、ちょうど[:: - 1] LIST_NAMEを使用しています。例えば

>>> l = ['one', 'two', 'three'] 
>>> for i in l[::-1]: 
... print i 
... 
three 
two 
one 
8

これを行うための明確な、最も神託の方法は、reversed()組み込みを使用することです。

与え
wrong_way = [1, 2, 3, 4] 
for item in reversed(wrong_way): 
    print(item) 

4 
3 
2 
1 

をこれは、より多くのを可能に、それは自然に逆イテレータを生成しますが、それが存在する場合、それはまた、専用の__reversed__()メソッドを呼び出すことができるだけでなく、として最適なソリューションですいくつかのオブジェクトで効率的な逆転。

wrong_way[::-1]を使用してリストを逆にすることはできますが、これはコードの読みやすさが低下し、効率が低下する可能性があります。しかし、それはリストスライシングの力を示しています。

reversed()はイテレータを提供するので、あなたは文字列でこれを行うにしたい場合は、あなたが戻ってあなただけそうであるように、幸いに簡単で、文字列へのあなたの結果を変換する必要があることに注意してください:

"".join(iterator) 

例えば:

"".join(reversed(word)) 

str.join()方法はので、ここで我々は、バックツーバックに配置する空の文字列を使用して、イテレータを取り、セパレータとして呼び出し元の文字列を使用して、文字列にすべての要素を結合します。

関連する問題