【发布时间】:2023-03-10 16:00:01
【问题描述】:
我来自 R 背景,对以下内容感到困惑:
假设我在变量 txt 中保存了列表格式的“hello”。因此
txt= ['h','e','l','l','o']
经过一些测试,以下工作:
txt.reverse()
"."join(txt)
并按预期产生olleh。
但是,以下操作不起作用:
"".join(txt.reverse())
它给出了一个错误。我很好奇为什么会这样,因为我认为我可以在函数调用中“嵌套”函数调用?
感谢您的帮助!
【问题讨论】:
-
您可以改用
reversed:"".join(reversed(txt))。 -
@roippi
reversed是就地。在解释器上尝试reversed([1,2,3]),它会返回一个listreverseiterator对象,这意味着没有复制。不同之处在于.reverse()修改了原始列表,而reversed()对其进行了迭代。 -
@Bakuriu 是的。今天没喝咖啡。 “就地”(或相反)对于任何类型的迭代器都是一个糟糕的描述。
-
@Bakuriu 这只是意味着
reversed返回一个迭代器,它将以相反的顺序返回项目。它不会修改reverse方法所做的原始参数。 -
@viddhart - 这是一个解释:stackoverflow.com/questions/5317817/python-in-place-functions
标签: python