2012-03-01 211 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()方法采用迭代和每一个元素加入到一个字符串,使用电话线作为分隔符,所以在这里我们使用空字符串将它们背到后面。

相关问题