Python 为什么str(反向(…)不';你不给我倒过来的绳子吗?
我正在努力适应迭代器。为什么我要打字Python 为什么str(反向(…)不';你不给我倒过来的绳子吗?,python,string,list,iterator,Python,String,List,Iterator,我正在努力适应迭代器。为什么我要打字 b = list(reversed([1,2,3,4,5])) 它会给我一个相反的列表,但是 c = str(reversed('abcde')) 不会给我一个反向字符串吗?在Python中,实际上返回一个反向迭代器。因此,在迭代器上应用将为您提供list对象 在第一种情况下,输入也是一个列表,因此在反向迭代器上应用列表的结果似乎适合您 在第二种情况下,应用于返回的迭代器对象将实际为您提供它的字符串表示形式 相反,您需要迭代迭代器中的值,并使用函数将它们
b = list(reversed([1,2,3,4,5]))
它会给我一个相反的列表,但是
c = str(reversed('abcde'))
不会给我一个反向字符串吗?在Python中,实际上返回一个反向迭代器。因此,在迭代器上应用将为您提供list对象
在第一种情况下,输入也是一个列表,因此在反向
迭代器上应用列表
的结果似乎适合您
在第二种情况下,应用于返回的迭代器对象将实际为您提供它的字符串表示形式
相反,您需要迭代迭代器中的值,并使用函数将它们全部连接起来,如下所示
>>> ''.join(reversed('abcde'))
edcba
另一种方法是扩展切片法
按字符串列出-->列表反向-->联接列表
>>> a
'abcde'
>>> b = list(a)
>>> b
['a', 'b', 'c', 'd', 'e']
>>> b.reverse()
>>> b
['e', 'd', 'c', 'b', 'a']
>>> "".join(b)
'edcba'
>>>
您需要在反向对象上进行迭代,这是通过调用该对象上的列表来完成的,
str(reversed('abcde'))
将对象作为字符串提供给您,与str([])
等相同。。doesRelated:请仔细检查您的问题,看看是否有答案值得接受(如本主题中的答案)。谢谢,我不确定字符串表示法与字符串表示法是什么?使用join是否有效,是因为它正在遍历反转的字符串以重新生成它(请原谅我的术语不好),而str()没有这样做?str将尝试将对象转换为字符串。由于反向迭代器是一个对象,因此将尝试将其转换为字符串。但是join迭代迭代器并使用迭代器库中的所有字符串生成一个新字符串,因此str()不会像list生成列表那样迭代生成新字符串。str()如何构建或转换字符串?区别在于字符串是不可变的,而列表是可变的,因此str()无法以相同的方式重新生成字符串str在内部调用\uuuuuuuuuuuuuuu
magic方法来获取字符串表示形式。
>>> a
'abcde'
>>> b = list(a)
>>> b
['a', 'b', 'c', 'd', 'e']
>>> b.reverse()
>>> b
['e', 'd', 'c', 'b', 'a']
>>> "".join(b)
'edcba'
>>>