列表生成式

2019年1月20日寒假大数据师资培训班

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回Python教程首页]

列表生成式

列表生成式通常是结合range()函数一起使用的,所以在介绍列表生成式前,我们先介绍Python的内置函数range()的使用方法。

range()

Python 的内置函数range() 函数可创建一个整数序列,一般用在 for 循环中。语法格式: range(start,end[,step])
start:起始下标(可选)。默认为0,例如range(5)等价于range(0,5)等价于[0,1,2,3,4]
end:终止下标。例如range(0,5)等价于[0,1,2,3,4],注意不包括终止下标5。
step:步长(可选)。默认为1,例如range(0,3,1)等价于range(0,3);range(0,6,2)等价于[0,2,4,6]
例如:

>>> r = range(0,4)    #从0开始,到4结束,[0,1,2,3]
>>> r
range(0, 4)
>>> for x in r:       #r需要利用for循环来访问
...     print(x,end="")  #不换行输出
... 
0123   #输出结果
>>> list(range(0,6,2))  #利用list()将range转为列表对象
#起始下标:0,终止下标:6,步长:2。注意这里不包括终止下标6,所以输出[0, 2, 4]
[0, 2, 4]
>>> tuple(range(2,9,3)) #利用tuple()将range转为元组对象
(2, 5, 8)

列表生成式

通过列表生成式,可以很容易生成有规律的序列。
语法格式:

[function(x) for x in list]

例如:要求生成一个列表[1×1,2×2,3×3,4×4]

>>> data = [1,2,3,4]
>>> def func(x):
...     return x*x
... 
>>> [func(x) for x in data]
[1, 4, 9, 16]

如果function()比较简单,我们可以不预先定义function(),直接通过表达式的形式来使用列表生成式,同时如果列表是数字且有规律,可以通过range()函数来生成的,这样我们就能用下面的一行代码,实现上述代码的所有功能。

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

例如:将所有的字符串变成小写

>>> L = ["Hi","Hello","Hey","PYTHON"]
>>> [x.lower() for x in L]
['hi', 'hello', 'hey', 'python']

总结

内置函数range()可以生成一个有规律的数字序列,我们可以通过列表表达式很方便的生成一个列表(可以是数字列表,字符串列表等)。Python最大的优势和特点就在于它的简洁性,能用最短的代码实现更多的功能。