Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么str(反向(…)不';你不给我倒过来的绳子吗?_Python_String_List_Iterator - Fatal编程技术网

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'
>>>