列表
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) 中关于列表的部分来完成以下练习:
- 使用列表切片获取出子列表
[4, 9]
和[10, 23]
。 - 将
90
添加到列表I
的末尾。尝试找一下合并两个列表和使用append方法有什么不同。 - 计算出列表中所有元素的平均数。你可以使用sum和len两个函数。
- 删除子列表
[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
列表推导式部分练习
- 使用列表推导式创建一个包含前10个数的平方的列表。
- 使用列表推导式创建一个包含前20个数的立方的列表。
- 使用列表推导式创建一个包含0-20间所有偶数的列表,创建另一个包含其中所有的奇数。
- 创建一个包含0-20间所有偶数的平方的列表,使用sum函数将它们相加。结果应该是1140。
- 创建一个包含0-20间所有偶数的平方,但忽略其中可以被3整除的列表。换句话说就是可以被2整除但不能被3整除。
请参阅Python文档中关于and关键字的用法。返回的列表应该是[4, 16, 64, 100, 196, 256]
。