是否有任何“pythonic方式”告诉python在从最后一项开始到第一项结束的字符串(或列表)中循环?
例如单词Hans
我希望python读取或排序为snaH
接下来,我怎么能告诉pyhon以下内容:现在从你产生的字符串中,搜索'a'找到它,如果你发现'n'跟在'a'之后,把'。'在'n'之后然后打印原始的字母顺序
答案 0 :(得分:8)
最清晰,最pythonic的方法是使用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)
e.g:
"".join(reversed(word))
str.join()
方法接受一个迭代器,并使用调用字符串作为分隔符将每个元素连接成一个字符串,所以在这里我们使用空字符串将它们背对背放置。
答案 1 :(得分:0)
这个怎么样?
>>> s = "Hans"
>>> for c in s[::-1]:
print c
s
n
a
H
或者,如果你想要一个与第一个相反的新字符串,试试这个:
>>> "".join(reversed("Hans"))
'snaH'
答案 2 :(得分:0)
当然,只需使用list_name [:: - 1]。 e.g。
>>> l = ['one', 'two', 'three']
>>> for i in l[::-1]:
... print i
...
three
two
one