gpt4 book ai didi

python - 为什么不能在 reversed() 函数之后将它返回给 str() 内置函数?

转载 作者:行者123 更新时间:2023-12-05 01:23:01 25 4
gpt4 key购买 nike

a = '123asdad'


str(reversed(a))
>> '<reversed object at 0x00000206C9F80250>'


list(reversed(a))
>> ['d', 'a', 'd', 's', 'a', '3', '2', '1']

我已经知道最好的方法是[::-1]。

但我想知道为什么我不能将反转对象转换为 str() 函数。 list() 或 tuple() 是可能的,但为什么 str() 不行?

这三个都是可迭代对象和Seqence类型对象,有什么我不知道的吗?

最佳答案

All three are iterable objects and Seqence type objects, is there anything I don't know?

你是对的,它们都是可迭代对象,但它们每个都有不同的 __str__ 实现。

如果您期望 str(reversed(a)) 返回 "['d', 'a', 'd', 's', 'a', '3' , '2', '1']",那么您最基本的要求是让 reversed 类具有与 __str__ 相同的行为 列表

这实际上会很困惑,因为它会模糊 reversedlist 对象之间的区别。他们是故意不同的。 reversed 对象包装了一个底层集合,并且表现得就好像它已经反转了内存中的所有元素,而实际上并没有浪费 CPU/内存来反转内存中的所有元素。 p>

如果您确实想要__str__list 行为,那么使用:

str(list(reversed(a)))

当然,您应该注意到,这最终真正进行了所有反转,将元素以相反的顺序复制到新列表中。如果这是不可取的,那么你将不得不实现自己的格式化代码来迭代一个 reversed 对象(或者任何可迭代的,真的),引用它的元素,用 , 加入它们并用 [ ] 包围它们。

关于python - 为什么不能在 reversed() 函数之后将它返回给 str() 内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72956076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com