序列是python中最基本的数据结构。序列中的每个元素都分配一个数字-它的位置,或索引,第一个索引是0,第二个索引是1,以此类推。
python中有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
列表是什么
列表由一系列按特定顺序排列的元素组成。你可创建包含字母表中所有字母、数字0-9或所有家庭成员姓名的列表,也可以将任何东西加入列表,其中的元素之间可以没有任何关系。列表通常包含很多个元素,因此给列表指定一个表示复数的名称(如letters、digits或names)是一个好的习惯。这里,举个通俗的例子,假如你让你的女朋友去买菜,可以让她带一个篮子,之后她可以将各种菜都放进篮子里,这里篮子就相当于列表的作用。
在python中,用方括号[]表示列表,并用逗号分隔其中的元素。下面是一个简单的示例,其中包含几种自行车:
bicycles = [trek,cannondale,redline,specialized] print(bicycles)
访问列表元素
列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉python即可,要访问元素,可指出列表名称,在指出元素的索引,并将后者放在方括号内。
例如,下面的代码从bicycles中取出第一辆自行车:
bicycles = [trek,cannondale,redline,specialized] print(bicycles[0])
索引从0开始不是从1开始
在python中,第一个列表元素的索引是0不是1,这与列表的底层实现相关。python为访问最后一个元素提供了一种特殊的语法。通过将索引指定为-1,可让python返回最后一个列表元素。其中最后一个元素的索引是-1,从后往前依次是-1,-2,-3等
bicycles = [trek,cannondale,redline,specialized] print(bicycles[-1])
访问列表中的值(使用列表中的各个值)
你可以像使用其他变量一样,使用列表中的各个值,例如,可以使用f字符串根据列表中的值来创建消息。
bicycles = [trek,cannondale,redline,specialized] message = fMy first bicycle was a {bicycles[0].title()}. print(message])
列表的增删改查
在列表中添加元素
1、在列表的末尾添加元素
在列表中添加新元素时,最简单粗暴的方式就是将元素附加(append)到列表。给列表附加元素时,它将添加到列表的末尾。继续使用前一个示例中的列表,在其末尾添加新元素ducati:
bicycles= [trek,cannondale,redline,specialized] print(bicycles) bicycles.append(ducati) print(bicycles)
方法append()将元素‘ducati’添加到列表末尾,而不影响其他元素。append只能添加一个元素,使用extend()函数可以将一个新的列表插入到原来列表的末尾。
2、在列表中插入新元素
使用方法insert()可在列表的任何位置添加新元素,为此,只需要指定要插入的元素和索引值。
bicycles= [trek,cannondale,redline,specialized] print(bicycles) bicycles.insert(0,ducati) print(bicycles)
这里将ducati插入到列表的开头,原先的元素都右移一个单位。
在列表中删除元素
1、使用del语句删除元素
如果你知道要删除元素的索引值,可以使用del语句。
bicycles= [trek,cannondale,redline,specialized] print(bicycles) del bicycles[0] print(bicycles)
这里直接将元素0删除,使用del语句可以删除任意位置的列表元素,条件是知道索引,使用del语句删除元素之后,你就将再也为无法访问了。
2、使用pop()方法删除元素
有时候,你可能需要删除某个元素,但是接着使用它的值,这时候使用pop()方法即可。术语弹出(pop)源自这样的类比,列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
pop()方法不输出参数时,默认删除最后一个元素,如果要删除任意位置的元素,只需要输入要删除元素的索引值即可。
4、根据值删除
前面介绍的都是根据索引值删除,使用remove()方法,可以把某个值的元素删除。
remove()方法删除元素之后,也可以使用它的值,注意:如果列表中有多个要删除的值,remove()方法只会删除第一个值,不会删除所有的。
修改列表元素的值
可以使用索引的方法访问后直接赋值,如果要修改一段的则可以使用列表切片的方式,访问赋值,和单个元素是一样的道理
查找列表元素的值
直接访问它的索引即可,也可以使用count()函数返回某个值是否存在,出现的次数是多少。
组织列表(排序,倒序)
使用方法sort()对列表永久排序,方法sort可以较为轻松的对列表进行排序。
cars = [bwm,audi,toyota,subaru] cars.sort() print(cars)
默认sort是从小到大进行排序,如果需要从大到小排序,只需要传入参数reverse= True即可。
bicycles= [trek,cannondale,redline,specialized] bicycles.sort(reverse = True) print(bicycles)
使用函数sorted进行临时排序,不修改原来列表的值。
reverse()函数是不按大小,只是把列表倒序。
最后,可以使用len()函数来计算列表含有多少个元素,其中,这里是直接从1开始计数的,不存在偏差1的情况,最后python的列表最为新颖的是切片——”无切片,不python“以及列表推导式。
列表推导式
引入,假如现在要创建一个列表,列表包含1~10的偶数,用普通方法实现如下:
num = [] for i in range(1,11) if(i%2==0) num.append(i) print(num)
如果用列表推导式实现如下:
num = [x for x in range(1,11) if(x%2==0)] print(num)
列表推导式的语法
简单语法:[表达式 for 变量 in 可迭代对象]
带条件无else:[表达式 for 变量 in 可迭代对象 if 条件语句]满足条件才会在列表中添加
带条件且有else:[表达式 if 条件语句 else 条件语句 for 变量 in 可迭代对象,满足不同条件添加不同的列表元素
多个for循环
表达式 第一个for循环 第二个for循环,这就类似于嵌套循环而已,没什么新奇的。