1、列表是什么
列表是由一系列按照特定顺序排列的元素组成,它可以创建包含字母表中的所有字母、数字0-9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,所以可以给列表表示一个复数的名称,比如:letters,digits,names等。
在Python中,用方括号([ ])来表示列表,并用逗号来分隔其中的元素。
2、访问列表元素
列表是有序集合,因此要访问列表中的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
例如,下面的代码从列表bicycles中提取第一款自行车:
还可以利用方法.title()是之首字母变为大写:
要注意的是,索引从0开始,而不是从1开始。在Python中,第一个列表元素的索引为0,而不是1,在大多数编程语言中都是如此,这与列表操作的底层实现相关。
另外Python为访问最后一个列表元素提供了一种特殊语法,通过将索引指定为-1,可让Python返回最后一个列表元素。这个语法很有用,因为我们经常需要在不知道列表长度的情况下访问最后的元素。而且这种约定也适用于其他负数索引,例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。
可像使用其他变量一样使用列表中的各个值,例如,我们可以使用拼接根据列表中的值来创建消息。例如:
3、修改、添加和删除列表元素
我们创建的大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素。比如:创建一个游戏,要求玩家射杀从天而降的外星人;为此,可在开始时将一些外星人存储在列表中,然后每当有外星人被射杀时,都将其从列表中删除,而每次有新的外星人出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,外星人列表的长度将不断变化。
- 修改列表元素
修改列表元素的语法与访问列表元素的语法类似,要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。例如:
- 添加列表元素
1、在列表末尾添加元素
可利用。append()函数,例如:
利用append()也可以动态地创建一个列表,比如,我们先创建一个空列表,再使用一系列的append()语句添加元素。下面来创建一个空列表,再在其中添加元素。
2、在列表中插入元素
使用方法insert()可在列表的任何位置添加新元素,所以,需要指定新元素的索引和值:
- 删除列表元素
我们经常需要从列表中删除一个或多个元素,例如,玩家将空中的一个外星人射杀后,我们可能要将其从存活的外星人列表中删除;当用户在我们创建的web应用中注销其账户时,我们需要将该用户从活跃用户列表中删除。我们可以根据位置或值来删除列表中的元素。
1、使用del语句删除元素
如果知道要删除的元素在列表中的位置,我们可以使用del语句:
2、使用方法pop()删除元素
有时候,我们要将元素从列表中删除,并接着使用它的值。例如:我们可能需要获取刚被射杀的外星人x与y的坐标,以便在相应的位置显示爆炸效果;在web应用程序中,我们可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。
方法pop()可删除列表中末尾的元素,并让我们能够接着使用它:
可以使用方法pop()打印一条消息,指出最后购买的是哪款摩托车:
3、弹出列表中任何位置处的元素
可以使用pop()来删除列表中任何位置的元素,只需要在pop()的括号中指定要删除元素的索引即可:
注意:以上motorcycles.pop(0)是被弹出去的那个元素,而不是弹出元素后剩下的那个列表;每当使用pop()时,被弹出的元素就不在列表中了。
如果我们要删除一个元素,且不再以任何方式使用它,就是用del语句;如果我们要在删除元素后继续使用它,就使用方法pop()。
4、根据值删除元素
有时候,我们不知道要在列表中删除的值所处的位置,只知道要删除的元素的值,可以使用方法remove()。
例如,假设我们要在列表motorcycles中删除值'ducati',使用remove语句:
另外,使用remove()从列表中删除元素时,也可以接着使用它的值。
4、组织列表
在我们创建的列表中,元素的排列顺序常常是无法预测的,因为我们不能控制用户提供数据的顺序,虽然这在大多数情况下是无法避免的,但我们经常需要以特定的顺序呈现信息。有时候,我们希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。
- 使用方法sort()对列表进行永久性排序
例如,用sort()将一个汽车列表按照汽车的字母顺序排列,为简化这项任务,我们假设该列表中的所有值都是小写的。
现在,汽车是按照字母顺序排列的,而且再也无法回复到原来的排列顺序。
我们也可以按照与字母顺序相反的顺序排列,为此只需要向sort()方法传递参数reverse=True,比如:
- 使用函数sorted()对列表进行临时排序
如果我们要保留列表元素原来的排列顺序,同时以特定的顺序去呈现他们,可以使用 sorted()。函数sorted()让我们能够按特定的顺序排列显示列表元素,同时也不影响他们在列表中的原始排列顺序。
注意:调用函数sorted()后,列表元素的排列顺序并没有改变,如果要按与字母顺序相反的顺序显示列表,也可以向函数sorted()传递参数reverse=True.
- 倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse(),假设汽车列表是按购买时间排列的,可轻松地按相反的顺序排列其中的汽车。
方法reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序,它永久性地修改列表元素的排列顺序,但可以随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可。
- 确定列表的长度
使用函数len()可快速获悉列表的长度:
有时候冷len()很有用:确定还有多少个外星人未被射杀,需要管理多少项可视化数据,网站有多少注册用户等。
5、使用列表时避免索引错误
开始使用列表时,经常会遇到一种错误。假设你有一个包含三个元素的列表,却要求获取第四个元素。就会出现索引错误。