列表

Python中的列表是一个可存放一组元素的数据结构。列表中的元素可以是好几种类型,你可以在同一个列表中混用多种类型,尽管一般来说里面存放的应该都是同一种数据类型。

创建一个列表使用中括号来完成,每个元素中间使用逗号隔开。列表中的元素可以使用它们位置信息来访问,0是第一个。

  1. >>> l = [1, 2, 3, 4, 5]
  2. >>> l[0]
  3. 1
  4. >>> l[1]
  5. 2

你能试着获取出数字4吗?

有时你想要的是列表中的一小段,一个子列表。子列表可以使用一种叫切片的方式获取到,使用切片需要同时定义开始和结束的索引。

  1. >>> l = ['a', 'b', 'c', 'd', 'e']
  2. >>> l[1:3]
  3. ['b', 'c']

最后,列表同样支持算术操作,像是将两个列表合并到一起或者重复其中的元素。

  1. >>> [1,2] + [3,4]
  2. [1, 2, 3, 4]
  3. >>> [1,2] * 2
  4. [1, 2, 1, 2]

列表部分练习

创建一个名为I的变量,并输入以下值:([1, 4, 9, 10, 23])。
查阅Python文档(https://docs.python.org/3.5/tutorial/introduction.html#lists) 中关于列表的部分来完成以下练习:

  1. 使用列表切片获取出子列表[4, 9][10, 23]
  2. 90添加到列表I的末尾。尝试找一下合并两个列表和使用append方法有什么不同。
  3. 计算出列表中所有元素的平均数。你可以使用sumlen两个函数。
  4. 删除子列表[4, 9]

列表推导式

列表推导式是一种生成列表的简洁方式。在方括号中写入一个包含for关键字的表达式即可完成。生成的内容与表达式有关。
下面演示了以一个列表中的数生成另一个内容为其数字平方的列表。

  1. >>> [x*x for x in [0, 1, 2, 3]]
  2. [0, 1, 4, 9]

出于灵活性考虑,列表表达式一般与range函数连用:

  1. >>> [x*x for x in range(4)]
  2. [0, 1, 4, 9]

有时你想基于给定条件过滤一些元素。这时if关键字就上场了:

  1. >>> [x for x in range(10) if x % 2 == 0]
  2. [0, 2, 4, 6, 8]

上面的例子返回0-10中所有的双数。更多的例子请参阅 https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

列表推导式部分练习

  1. 使用列表推导式创建一个包含前10个数的平方的列表。
  2. 使用列表推导式创建一个包含前20个数的立方的列表。
  3. 使用列表推导式创建一个包含0-20间所有偶数的列表,创建另一个包含其中所有的奇数。
  4. 创建一个包含0-20间所有偶数的平方的列表,使用sum函数将它们相加。结果应该是1140。
  5. 创建一个包含0-20间所有偶数的平方,但忽略其中可以被3整除的列表。换句话说就是可以被2整除但不能被3整除。
    请参阅Python文档中关于and关键字的用法。返回的列表应该是[4, 16, 64, 100, 196, 256]