2012-03-01 43 views
1

有沒有什麼「pythonic方式」告訴python從一個字符串(或列表)循環到最後一個項目並以第一個結尾?Python:從最後一項開始循環,並以第一項結束

例如字Hans我想蟒蛇閱讀或它排序爲snaH

接下來,我怎麼能告訴pyhon如下:現在從字符串你得到,搜索「A」發現就OK了,如果你發現'n'跟在'a'後面,放''。 'n'之後再打印字母的原始順序

回答

0

這個怎麼樣?

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

s 
n 
a 
H 

另外,如果你想有一個新的字符串,是第一個相反,試試這個:

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

當然,只要使用LIST_NAME [:: - 1]。例如

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

做到這一點的最清晰和最Python的方式是使用內置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()方法採用迭代和每一個元素加入到一個字符串,使用電話線作爲分隔符,所以在這裏我們使用空字符串將它們背到後面。

相關問題