学习Python在一天的列表切片表示法混乱特别是从b

2024-10-03 21:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

各位程序员

我是编程新手,想知道是否有人能帮我弄清楚一些东西?我不确定这是因为它的写作方式,还是仅仅是一个真实的,但矛盾的做事方式。在

我目前正在从《在一天内学习Python》一书中学习Python,他们对列表切片的解释让我很困惑。开始时,它们声明单个索引总是从零开始,但在后面的示例中,它们似乎使用“1”作为起点(?)以指数5-1结束?在

他们在下面使用的示例是:userAge=[21,22,23,24,25]

在开始的时候,在下面的摘录中,他们解释说指数为21=0,指数为22=1,23=2,24=3,25=4。在

但当他们到达摘录的底部时,他们在谈论第五个索引(尽管上面的例子中没有索引)。。。在

这是这本书的摘录。我强调了让我困惑的地方:

“列表中的各个值可以通过其索引访问,索引始终从零开始,而不是1。这是几乎所有编程语言(如C和Java)中的常见做法。因此,第一个值的索引为0,下一个值的索引为1,依此类推。例如,userAge[0]=21,userAge[1]=22。

或者,您可以从后面访问列表的值。列表中最后一项的索引为-1,后一项的索引为-2,依此类推。因此,userAge[-1]=25,userAge[-2]=24。

您可以将列表或其一部分分配给变量。如果编写userAge2=userAge,变量userAge2将变为[21,22,23,24,25]。

如果编写userAge3=userAge[2:4],则将索引为2的项目分配给索引4-1,从列表userAge分配给list userAge3。换句话说,userAge3=[23,24]。

符号2:4被称为切片。每当我们在Python中使用切片表示法时,开始索引处的项目总是被包括在内,但末尾的项目总是被排除在外。因此,符号2:4指的是从索引2到索引4-1的项目(即索引3),这就是为什么userAge3=[23,24],而不是[23,24,25]。

切片表示法包括第三个数字,称为步进器。如果我们写userAge4=userAge[1:5:2],我们将得到一个子列表,它包含从索引1到索引5-1的每一秒的数字,因为步进器是2。因此,userAge4=[22,24]。

此外,切片符号还有有用的默认值。第一个数字的默认值是零,第二个数字的默认值是被切片的列表的大小。例如,userAge[:4]为您提供从索引0到索引4-1的值,而userAge[1:]为您提供从索引1到索引5-1的值(因为userAge的大小是5,即userAge有5个项)。“

如果原始示例只有索引0-4(尽管这意味着列表中有五个项),我不确定他们从哪里得到“5-1”。这是“规则更改”还是他们将索引编号从0更改为4,更改为1到5?我知道‘5-1’意味着你会回到索引4,因为上面提到的“结束独占”,但是你不需要在减去它之前把它放在那里吗?在原始示例中,没有第5个索引(尽管列表中有5个项)。。。在

不用说,我很困惑!哈哈。在

提前感谢您的帮助!在

简。十


Tags: 项目示例列表编程方式符号切片数字
3条回答

切片可以这样解释。在

a[first:last]#items goes at first to last-1
a[first:]#items goes from first to the rest of the array
a[:last]#items from the beginning to the end-1
a[:]#copy of the whole array.

对于步骤

^{pr2}$

::如果一个元素包含一个空的元素,我只会给你一个例子。在

所以,在这里,当我们使用`userage[1:]时,一切都从第二个元素开始。在

好吧,这段摘录中有很多误导性的解释。在

关于切片的默认值-忘记索引,在“人类”的解释中:

  • data[x:]–从索引x开始一直到结尾
  • data[:x]–从最开始到第x-th元素的切片

他们说5 - 1的原因是因为第二个切片值是排他的,也就是说,要显式地切片到长度为N的数组的末尾,您将编写[:N],但最后一个元素将有索引N-1,这正是因为索引从0开始,但元素计数从1开始。在

当切片userAge[1:]时,从第二个元素一直到最后一个元素,都会得到所有内容。在

userAge[1:]=[22,23,24,25]

相关问题 更多 >