2017-04-20 32 views
0

扭转一个字符串是什么'。加入(目的)这里
为什么要使用join()方法的功能,而在蟒蛇

print(''.join(reversed(a))) 

我们不能扭转一个字符串仅与反向功能

print(reversed("python")) 
+1

这不是你的具体问题的答案,但是你可以在没有'join'和'reversed'的情况下反转一个字符串:'revstring = mystring [:: - 1]'。 – VPfB

+0

你有没有打过电话的代码? –

回答

4

不,你不能简单地通过调用reversed做到这一点。 reversed返回一个特殊的reversed迭代器对象,它需要迭代以产生它的元素。

不提供给.join这里只会打印出reversed对象的令人困惑的repr对象:<reversed object at 0x7f2ba02be320>

调用"".join,这需要一个迭代作为参数,消耗reversed对象并加入元素产生你看到的字符串。

注意到,还有其他的方式来使用它,而不join导致不同的对象,list,例如,将采取reversed对象,并创建一个列表出来它产生的元素:

a = reversed('abcd') 
print(list(a)) 
['d', 'c', 'b', 'a'] 

如果你最后需要一个字符串,那么最好的选择是.join

0

你可以操纵str一样list

a = 'abcd' 
a[::-1] #'dcba' 
0

join目的是采取迭代和分隔符加入它产生一个字符串:

''.join(reversed(a)) 

a可以是迭代支持迭代协议或重载对象__getitem__。也就是说,您通常想要在for循环或理解中使用的任何对象,或者您想迭代以产生结果并将它们作为字符串进行迭代,该对象可能是join的潜在值。

reversed返回您需要迭代的对象以便获取其值join中的值。所以''.join(reversed(a))意味着以下内容:首先反向a,然后迭代reversed的结果对象,并按照join指定的分隔符连接每个提取的对象,在这种情况下,它只是一个空字符串。

难道我们不能只用反转函数来反转字符串吗?

不是真的!您可以使用此表达式而不是reversed函数:'stackoverflow'[::-1]来反转字符串。像往常一样,可以通过几种方法在编程中实现相同的效果。