我是 Python 的新手,在我的书中遇到了以下示例,但解释得不是很好。这是我从口译员那里打印出来的:

>>> s = 'spam'
>>> s[:-1]
'spa'

为什么没有开始边界和 a 的切片 '-1' 返回除最后一个元素之外的所有元素?正在呼叫 s[0:-1] 逻辑上与调用相同 s[:-1]?它们都返回相同的结果。但我不确定 python 到底在做什么。任何帮助将不胜感激。

有帮助吗?

解决方案

是,主叫s[0:-1]是完全一样调用s[:-1]

使用负数如蟒索引返回从列表中的右手侧(相对于通常的左手侧)。

的第n个元素

所以如果你有一个列表,因此:

myList = ['a', 'b', 'c', 'd', 'e']
print myList[-1] # prints 'e'

的打印语句将打印的 “e”。

一旦你明白(你可能已经,这是不完全清楚,如果这就是你感到困惑或没有的事情之一),我们就可以开始谈论切片。

我会假设你懂得沿myList[2:4](这将返回['c', 'd'])的线片的基础,并直接跳转至切片符号,其中一面是空白。

如您在您的文章怀疑,myList[:index]是完全一样myList[0:index]

这也是各地工作的其他方式,顺便...... myList[index:]相同myList[index:len(myList)]并返回从列表中的所有元素的列表开始index中去,直到结束(如print myList[2:]将打印['c', 'd', 'e'] )。

作为第三个音符,甚至可以做print myList[:]其中没有指数表示,这将基本上返回整个列表的副本(相当于myList[0:len(myList)],返回[“A”,“B” , 'C', 'd', 'E'])。如果你认为myList中会在某个时刻改变,但你要保持它的一个副本,在当前状态下,这可能是有用的。

如果你不是已经在做了我觉得只是插科打诨的Python解释了一大堆对了解这些东西有很大帮助。我建议 IPython的

其他提示

在关键的一点是蟒指数应该被认为是作为指针指向的条目之间的空间中的列表,而不是元素本身。因此,0点开始,到1之间的第一和第二,...和n到第n和之间(N + 1)。

因此升[1:2]。给你仅包含元件升列表[1],因为它给你的两个指针之间的所有内容

类似地,负索引指向在元件之间,但这个时间的最后元件和所述下一个到最后一个之间从背计数,所以-1分,所以[0:-1]是指项目的块不包括最后一个。

作为语法糖,可以从一开始就离开关0或,实际上,端部,所以升[N:]是指一切从L [n]至结束时(如果n> = LEN(升),然后它返回一个空列表)。

>>> l = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz&']

# I want a string up to 'def' from 'vwx', all in between
# from 'vwx' so -2;to 'def' just before 'abc' so -9; backwards all so -1.
>>> l[-2:-9:-1]
['vwx', 'stu', 'pqr', 'mno', 'jkl', 'ghi', 'def']

# For the same 'vwx' 7 to 'def' just before 'abc' 0, backwards all -1
>>> l[7:0:-1]
['vwx', 'stu', 'pqr', 'mno', 'jkl', 'ghi', 'def']

请不要对清单变得无精打采。

  1. 先写第一个元素。您可以为此使用正或负索引。我很懒,所以我使用正数,少一笔(低于 7,或开始时为 -3)。
  2. 您要停止的位置之前的元素的索引。同样,您可以使用正数或负数索引(低于 2 或 -8 表示停止)。
  3. 这里标志很重要;当然-向后;你知道的步幅值。步幅是一个具有大小和方向的“向量”(低于 -1,全部向后)。

    l = [0,1,2,3,4,5,6,7,8,9]
    l[7:2:-1], l[-3:2:-1], [-3:-8:-1],l[7:-8:-1]
    

    全部结果为 [7, 6, 5, 4, 3].

否定指数从端计数,所以S [ - 1]等同于第[:LEN(S)-1]和s [-1]是最后一个元件,例如

是,主叫s[0:-1]在逻辑上是相同的东西,因为s[:-1]切片最好定义为:

[beginning_index:ending_index]

Python允许您省略0,因为这可以让你的代码更简洁。

如果我们想从我们可以去负索引字符串的后端打印。索引从-1开始。

例性:s = '世界你好'

S [-11:-1] = '你好WORL' S:(即,在这种情况下-1大于-11)。[-1 -11] =“” //开始值要低,如果它是大于它不会打印出任何东西

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top