列表

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

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

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

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

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

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

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

>>> [1,2] + [3,4]
[1, 2, 3, 4]
>>> [1,2] * 2
[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关键字的表达式即可完成。生成的内容与表达式有关。 下面演示了以一个列表中的数生成另一个内容为其数字平方的列表的推导式。

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

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

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

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

>>> [x for x in range(10) if x % 2 == 0]
[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]


书籍推荐