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
?
答案 0 :(得分:13)
[::-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))
)
答案 1 :(得分:2)
list[::-1]
使用切片表示法并以相反的顺序返回所有元素。
Explain Python's slice notation
以下是对示例的详细解释 - 它将回答这个问题和更类似的问题。
def reverse(list)
的缩进使其仅在manualReverse(list)
内可见。
如果你是unindent,它将在全球范围内可见。
答案 2 :(得分:0)
只需使用内置函数反转
>>> reversed(my_list)
请参阅http://docs.python.org/2/library/functions.html?highlight=reversed#reversed