2
def manualReverse(list):
    return list[::-1]

    def reverse(list):
        return list(reversed(list))   

list = [2,3,5,7,9]

print manualReverse(list)
print reverse(list)

我刚开始学习Python。谁能帮我解决以下问题?

1.怎么list[::-1]返回reversed列表?

2.为什么第二个函数会抛出我NameError: name 'reverse' is not defined

4

3 回答 3

13

[::-1]等价于[::1],但不是从左到右,负数让它从右到左。负步长为 1,这只是以相反的顺序返回所有元素。整个语法称为Python Slice Notation

原因'reverse' is not defined是您没有全局定义它。它是manualReverse函数中的本地名称。您可以取消缩进该函数,使其成为全局函数。

def manualReverse(list):
    return list[::-1]

def reverse(list):
    return list(reversed(list))   

顺便说一句,命名列表从来都不是一个好主意list。它将覆盖内置类型,也包括您所依赖的函数 ( list(reversed(list)))

于 2013-07-11T11:27:23.767 回答
2

list[::-1]利用切片表示法并返回所有元素,但顺序相反。 解释 Python 的切片符号 这里有一个详细的例子解释——它将回答这个和更多类似的问题。

的缩进def reverse(list)使其仅在内部可见manualReverse(list)。如果您取消缩进,它将在全球范围内可见。

于 2013-07-11T11:28:37.413 回答
0

只需使用反转的内置函数

>>> reversed(my_list)

请参阅http://docs.python.org/2/library/functions.html?highlight=reversed#reversed

于 2013-07-11T12:16:35.500 回答