Python 基础 -- 列表

  • 1. 列表定义
  • 1.1 访问列表的元素
  • 1.2 索引
  • 1.3 使用列表中的各个值
  • 2. 修改、添加和删除元素
  • 2.1 修改列表元素
  • 2.2 在列表中添加元素
  • 1. 在列表末尾添加元素
  • 2. 在列表总插入元素
  • 2.3 从列表中删除元素
  • 1. 使用 del 语句删除元素
  • 2. 使用函数 pop() 删除元素
  • 3. 弹出列表中任何位置的元素
  • 4. pop() 和 del 的选择
  • 5. 根据值删除元素
  • 3. 组织列表
  • 3.1 使用 sort() 方法对列表进行永久排序
  • 3.2 使用 sorted() 方法对列表进行临时排序
  • 3.3 倒着打印列表
  • 3.4 确定列表长度
  • 4. 遍历列表
  • 4.1 for 循环
  • 5. 创建数字列表
  • 5.1 range() 函数
  • 5.2 使用 range() 创建数字列表
  • 5.3 对数字列表执行简单的统计计算
  • 5.4 列表解析
  • 6. 使用列表中的一部分
  • 6. 1 切片
  • 6.2 遍历切片
  • 6.3 复制列表
  • 7. 元组
  • 7.1 元组定义
  • 7.2 元组遍历
  • 7.3 修改元组变量


1. 列表定义

  • 列表是一个可以存储成组信息的地方;
  • 列表是由一系列按特定顺序排列的元素组成;
  • 列表中可以添加任何成员,包括字母、数字或者家庭成员信息等;
  • 列表中的元素可以没有任何关系
  • 鉴于列表通常包含多个元素,所以列表名称一般使用复数表示;
  • Python 中列表使用 [] 表示,并用 , 来分隔其中的元素;
  • python 1对多 存储_python 1对多 存储

  • 如上列表示例,并将其打印输出,但是这种输出含有方括号,这不是让用户看到的格式,下面将介绍如何访问列表元素。

1.1 访问列表的元素

  • 列表是有序集合,因此只需将该元素的位置或者索引告诉 Python 即可;
  • 访问列表元素,可指出列表名称,再指出元素的索引,并将其放在方括号内;
  • python 1对多 存储_python_02

  • 当请求获得列表中的元素时,Python 只返回该元素,而不包括方括号和引号;
  • 这种输出结果是整洁、干净的,是用户需要看到的;
  • 如果结合 title() 函数,会使得格式更加整洁。

1.2 索引

  • 在 Python 中,第一个列表元素的索引是 0,而不是 1,这与列表底层实现有关;
  • bicycles 列表中,需要访问第 2 个和第 4 个元素时,索引需要为 1 和 3;
  • python 1对多 存储_元组_03

  • Python 为访问最后一个列表元素提供了一种特殊的语法:
  • 索引为 -1 时,将返回最后一个元素;
  • 索引为 -2 时,将返回倒数第二个元素;
    ……
  • python 1对多 存储_python_04

1.3 使用列表中的各个值

  • 可以像使用变量一样,使用列表中的各个值;

2. 修改、添加和删除元素

  • 创建的列表大多数都是动态的,这意味着列表创建后,将随着程序的运行进行元素的增删;
  • 例如,创建一个游戏,要求玩家射杀外星人,为此,可以在开始时将一些外星人存储在列表中,然后每当有外星人被杀时,都将其从列表中删除,每次有新外星人出现时,都将其添加在列表中;

2.1 修改列表元素

  • 修改列表元素的语法与访问列表元素的语法类似;
  • 修改列表元素,可指定列表名和要修改的元素索引,再指定该元素的新值;
  • python 1对多 存储_python_05

  • 建立一个 motorcycles 列表,并将第一个元素进行修改,输出表明,只有第一个元素进行了改变,其他都没有改变;
  • 可以按照以上操作修改任意的元素,并非只能修改第一个;

2.2 在列表中添加元素

1. 在列表末尾添加元素
  • 在列表中添加新元素时,最简单的就是将元素附加到列表末尾;
  • 使用 append() 函数将元素添加到列表末尾,不会影响列表中其他所有元素;
  • python 1对多 存储_Python_06

  • append() 函数也可以动态创建列表;
  • 先创建一个空列表,通过一系列 append() 函数添加元素
  • python 1对多 存储_python_07

2. 在列表总插入元素
  • 使用 insert 函数可以在列表中任何位置添加新元素;
  • 使用 insert 函数进行添加元素时需要指定新元素的索引
  • python 1对多 存储_python_08

  • 使用 insert 函数进行添加元素时,添加位置左边的元素索引不变,右边索引统一向后移动一位;

2.3 从列表中删除元素

  • 有时候在某些程序中,需要删除列表中的一个或者多个元素;
  • 例如一个系统有多个账户,在注销账户时就需要将该账户从活跃账户列表中删除;
1. 使用 del 语句删除元素
  • 知道要删除元素在列表中的位置时,可以使用 del 语句进行元素删除;
2. 使用函数 pop() 删除元素
  • 有时候将元素从列表中删除后,还需要接着使用它的值;
  • 比如,当你将某用户从活跃列表中移除时,就需要将其添加到非活跃用户列表中;
  • 函数 pop() 可删除列表末尾的元素,并让你能够接着使用它;
  • 术语弹出(pop) 源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素;
  • python 1对多 存储_python 1对多 存储_09

  • 定义并打印列表 motorcycles
  • 从列表 motorcycles 中弹出末尾元素,并将其存储到变量 pop_motorcycles 中;
  • 打印弹出末尾元素值后的列表,显示,从原列表中删除了最后一个元素;
  • 打印弹出的值,证明被弹出的值依旧可以访问;
3. 弹出列表中任何位置的元素
  • 使用 pop() 函数删除任何位置的元素时,只需要括号里边指定删除元素的索引;
4. pop() 和 del 的选择
  • 当你要从列表中删除一个元素,并且不再以任何方式使用它的时候,选择 del
  • 当你希望删除后的元素还能继续使用时,选择 pop()
5. 根据值删除元素
  • 当不知道元素的索引,但是知道元素的值时,可以使用 remove() 方法删除元素;
  • remove() 只删除第一个指定的值。如果需要删除多个重复值,需要使用循环。
  • python 1对多 存储_python_10

3. 组织列表

  • 有时候希望列表元素保持最初始的排列顺序;
  • 有时候又需要对元素进行排序;

3.1 使用 sort() 方法对列表进行永久排序

  • sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数;
  • sort() 函数语法:
list.sort(cmp = None, key = None, reverse = False)
  • cmp :可选参数,如果指定了该参数会使用该参数的方法进行排序;
  • key :用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可选迭代对象中的一个元素来进行排序;
  • reverse :排序规则,reverse = True 降序,reverse = False 升序(默认);
  • python 1对多 存储_python 1对多 存储_11

3.2 使用 sorted() 方法对列表进行临时排序

  • 使用 sorted() 函数,既可以保留列表元素原来的排列顺序,同时以特定的顺序呈现它们;
  • python 1对多 存储_Python_12

  • 也可以向函数 sorted() 传递参数 reverse = True

3.3 倒着打印列表

  • 要反转列表元素的排列顺序,可以使用函数 reverse()
  • python 1对多 存储_python 1对多 存储_13

  • 函数 reverse() 永久性的改变元素排列顺序,但是可以随时恢复之前的排列顺序;
  • 函数 reverse() 并不是按照字顺序的相反顺序排列列表元素,只是反转列表元素的排列顺序。

3.4 确定列表长度

  • 使用函数 len() 可以获得列表的长度;

4. 遍历列表

  • 遍历列表就是对列表中的每一个元素执行相同的操作;
  • 在 Python 中可以使用循环来实现;
  • 循环就是让计算机自动完成重复工作的常见方式之一;
  • 典型代表:for 循环;

4.1 for 循环

  • 语法:
for car in cars:
    print(car)
  • 注意:
  • Python 根据缩进来判断代码行与前一个代码的关系
  • 在 for 循环后面,没有缩进的代码都只执行一次;
  • 正常遍历列表:
  • python 1对多 存储_删除元素_14

  • 对于列表中的每个名字,Python 都将重复执行 for 循环内容,将所有名字都打印都出来;
  • 常见错误 – 忘记缩进
  • python 1对多 存储_python_15

  • 常见错误 – 遗漏了冒号
  • python 1对多 存储_元组_16

5. 创建数字列表

  • 在数据可视化中,处理的几乎都是由数字(如温度、距离和人口数量等)组合成的集合;
  • 列表非常适合用于存储数字集合;

5.1 range() 函数

  • range() 函数可创建一系列数字;
  • 语法:
range(start, stop, [step])
  • start :计数从 start 开始,不写就默认为 0;例如, range(5),等价于 range(0, 5)。
  • stop :计数到 stop 结束,但是不包括 stop,例如,range(0, 5),是[0, 1, 2, 3, 4]。
  • step :步长,默认为 1。
  • Python 2 中 range() 函数返回的是列表:
  • Python 3 中 range() 函数返回的是一个可迭代的对象,而不是列表类型,所以打印的时候不会打印出列表:
  • list() 函数是对象迭代器,可以把 range() 函数返回的可迭代对象转为一个列表,返回的变量类型为列表:

5.2 使用 range() 创建数字列表

  • 使用 range() 打印 1~10 内的所有数;
  • 使用 range() 打印 1~10 内的所有偶数;
  • 使用 range() 打印 1~10 内的所有数的平方;

5.3 对数字列表执行简单的统计计算

  • Python 有几个专门处理简单数字列表的函数;
  • 例如,最大值 max 、最小值 min 和总和 sum

5.4 列表解析

  • 对于 5.2 节中,使用 range() 打印 1~10 内的所有数的平方,包含三四行代码,颇为繁琐;
  • 列表解析可以使得只需要一行代码就可以生成这样的列表;
  • 列表解析:将 for 循环和创建新元素的代码合并成一行,并自动附加新元素;
  • 这种语法定义如下:
  • 首先,描述一个列表名,如 squares;
  • 然后,指定一个左方括号,并定义一个表达式,用来生成你要存储到列表中的值,如 values ** 2
  • 最后,使用 for 循环,给表达式提供值,再加上右方括号;
  • 值得注意的是:列表解析中的 for 循环末尾没有冒号

6. 使用列表中的一部分

6. 1 切片

  • 切片:列表中的部分元素;
  • 创建列表切片与 range() 函数类似;
  • 可指定要使用的第一个元素的索引和最后一个元素的索引加 1;
  • 例如,指定索引 0~3,将会输出索引为 0、1 和 2 的元素;

6.2 遍历切片

  • 在很多情况下,切片都很有用,例如, web 程序中,可以使用切片来分页显示;
  • 通过在 for 循环中使用切片,达到遍历切片的目的:

6.3 复制列表

  • 复制列表,可以创建一个包含整个列表的切片;
  • 方法是同时省略起始索引和终止索引 ([:])
  • 对我们各自喜欢的队员进行追加,结果如下:
  • 结果显示,追加成功;
  • 在最开始看复制列表这一块,我的第一反应是 friend_players = my_players 这样直接赋值;
  • 但是在 Python 语法中,意思是将 friend_players 关联到包含在 my_players 列表中,因此这两个变量都指向同一个表,添加新信息的时候就会同时出现在两个列表中,演示如下:

7. 元组

7.1 元组定义

  • 元组:不可变的列表;
  • 元组虽然是不可变的列表,但是不是列表,它是使用圆括号 () 来标识;
  • 定义后,也可以使用索引来访问;
  • 元组是不可以修改的:

7.2 元组遍历

  • 像列表一样,元组中的所有值可以用 for 循环来遍历:

7.3 修改元组变量

  • 元组虽然不可以直接修改其中的元素,但是可以通过重新赋值来改变元组,即重新定义;