我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).
对我来说,这种符号需要一点点提升.
它看起来非常强大,但我还没有完全了解它.
reversePython的str对象没有内置函数.实现此方法的最佳方法是什么?
如果提供非常简洁的答案,请详细说明其效率.例如,是否将str对象转换为其他对象等.
当我解释我的问题时,请耐心等待.如果您已经了解扩展切片列表索引,请跳至粗体标题.
在python中,您可以使用切片表示法索引列表.这是一个例子:
>>> A = list(range(10))
>>> A[0:5]
[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
你还可以包括一个步幅,它就像一个"步骤":
>>> A[0:5:2]
[0, 2, 4]
Run Code Online (Sandbox Code Playgroud)
步幅也允许为负,意味着元素以相反的顺序检索:
>>> A[5:0:-1]
[5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
可是等等!我想看看[4, 3, 2, 1, 0].哦,我明白了,我需要减少开始和结束指数:
>>> A[4:-1:-1]
[]
Run Code Online (Sandbox Code Playgroud)
发生了什么?它将-1解释为位于数组的末尾,而不是开头.我知道你可以达到以下目的:
>>> A[4::-1]
[4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)
但是你不能在所有情况下使用它.例如,在已传递索引的方法中.
是否有任何好的pythonic方法使用具有负步幅的扩展切片以及包含序列的第一个元素的显式开始和结束索引?
这是我到目前为止所提出的,但似乎并不令人满意.
>>> A[0:5][::-1]
[4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud) 我已经看到这个语法出现在我最近看到的几个代码片段中,我很好奇它的作用.如果我有my_list = [1,2,3,4,5],并执行my_list[::-1],我会给出一个反转元素的列表[5,4,3,2,1].有人可以向我解释这实际上是做什么的,并显示[:]符号和[::]?之间的区别?或者至少向我推荐一个资源.
我敢肯定,如果我有一本好的Python书,它会在那里,但我没有.因为[::]被忽略了,所以不可能在谷歌搜索这样的东西.谢谢!
我正在使用Python 3.5.
作为问题的一部分,我正在尝试设计一个将列表作为输入并将其还原的函数.所以,如果x = [a, b, c]该功能会x = [c, b, a].
问题是,我不允许使用任何内置函数,它让我陷入困境.我最初的想法是函数内的以下循环:
for revert in range(1, len(x) + 1):
y.append(x[-revert])
Run Code Online (Sandbox Code Playgroud)
它有效.但问题是我正在使用len(x),我认为这是一个内置函数,对吗?
所以我四处搜索并制作了以下非常简单的代码:
y = x[::-1]
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,但它看起来几乎太简单/容易,我不确定是否"::"算作一个功能.
所以我想知道是否有人有任何提示/想法如何手动设计所述功能?当你不能使用任何内置函数时它看起来真的很难,现在我已经停留了很长时间.
不确定我在哪里挑选它,但它卡住了我一直使用它.
有人可以解释这个字符串逆转是如何工作的吗 我用它来测试回文字符串而不先将其转换为可变类型.
>>> word = "magic"
>>> magic = word[::-1]
>>> magic
'cigam'
Run Code Online (Sandbox Code Playgroud)
我会做出最好的猜测,但我不想对任何关于这个有用技巧背后的内部结构的先入之见.