python列表list的切片的索引方向和步数方向,及迭代遍历

列表的切片是python计算机编程当中非常重要的工具,比如利用Django进行web博客应用开发时,我们要访问数据库,并获取阅读量前十的文章时,我们就可以先访问数据库获取所有的文章并利用利用访问量进行从高到低进行排序,接着就可以利用切片来截取前十的文章索引了。除此之外,切片还会有很多的功能,当我们具体遇到了就自然而然会详细的讲解。

python列表list的切片

python列表切片的语法如下:

[ start : end : step ];其中start为开始索引,为闭区间,end为末尾索引,为开区间,无法获取该索引上的值,step为步数和方向;

注意:据个人总结,start和end的位置关系决定了索引的方向,都为正表示从左向右,都为负表示从右向左,步数step为正表示从左向右的方向,为负表示从右向左的方向。当索引方向和步数方向不一致时,无法切片获取值,这在其他的python教程或文档中是看不到这种简单的一目了然的理解方式的。具体可以看一下或试一下下面的示例:

示例

>>> a = list(range(1,10))
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:5:2] #索引从0开始,到索引5(不取5上的数),步数为2(即隔一个元素取一个值),且为正方向,从左向右
[1, 3, 5]
>>> a[0:9:5]
[1, 6]
>>> a[0:5:1] #默认的步数为1,方向默认为从左向右
[1, 2, 3, 4, 5]
>>> a[0:9:-1] #注意,当切片的索引方向(从开始位置到末尾位置的方向)与步数方向相反时,无法获取到值。
[]
>>> a[::-1] #可是这个为什么能够获取到值呢,因为默认情况下,索引方向可正可负,很显然这里因为步数为负,所以索引方向也是从右向左。
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> a[::] #默认截取整个列表
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[-5:] #开始位置为倒数第五个(开始位置是可获取值的索引位置)
[5, 6, 7, 8, 9]
>>> a[-5:-2]  #倒数第五位到倒数第二位(末位置是不可获取值的索引位置)
[5, 6, 7]
>>> a[-5:-8:-2] #索引方向和步数方向相同,可以获取到值
[5, 3]
>>> a[-5:-6] #当都是负的方向的时候,开始位置的索引值大于末位置的索引值将无法获取值
[]

python列表list的迭代遍历

python计算机语言当中,常常用for循环进行列表的迭代遍历,非常有用,下面我们将利用for循环写一个求列表元素和的函数sum()。

示例

打开jupyter notebook,因为要写函数,用这个编辑器比较方便。

In[1]: a = list(range(1,2))
def sum_self(alist): #声明求列表元素和的函数,因为python内置了sum()函数,所以应该函数命名应该避开sum这个关键词
    sum_list = 0 #先声明一个用来存储和的变量
    for i in alist: #循环遍历传递过来的列表参数,遍历就是可以一个个获取列表中的元素,并进行相应的数据处理
        sum_list += i #这个式子等同于 sum_list = sum_list + i
    return sum_list
sum_list = sum_self(a)
print(sum_list)
45

for循环的遍历步骤,我们将在for循环那一节一个步骤一个步骤地进行详细介绍,在语法的数据结构的基础阶段,大家先了解一下即可。

下一节我们将继续介绍python的另一种数据类型——元组。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.