为了创建列表,最明显和记住的解决方案是使用for循环。
示例
Python 3.6.8 (default, Apr 25 2019, 21:02:35)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> flights = {'09:35':'Long Beach', '10:00':'los-angeles', '11:00':'san jose'}
>>> flight_time_list = []
>>> for key in flights.keys():
...     flight_time_list.append(key)
...
>>> print(flight_time_list)
['09:35', '10:00', '11:00']
>>>Python的内置理解功能使我们可以将列表创建中的行数减少为一行。
示例
-bash-4.2$ python3
Python 3.6.8 (default, Apr 25 2019, 21:02:35)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> flights = {'09:35':'Long Beach', '10:00':'los-angeles', '11:00':'san jose'}
>>> flight_time_list = [ key for key in flights.keys()]
>>> print(flight_time_list)
['09:35', '10:00', '11:00']
>>>该列表理解开始用[和],以确保结果的列表。
[expression for item in list]
该理解也可以利用,如果条件。
示例:将常见项目分组到列表中
Python 3.6.8 (default, Apr 25 2019, 21:02:35) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> grade_k = ['maddy', 'sriansh', 'owen', 'molly'] >>> grade_first = ['molly', 'owen', 'ricky', 'sid'] >>> common_names = [a for a in grade_k for b in grade_first if a==b] >>> print(common_names) ['owen', 'molly'] >>>
理解需要更少的代码。Python解释器已经过优化,可以尽快运行理解。
理解的执行速度比for循环快。
可以在无法使用for循环的地方使用理解。所有的理解都出现在赋值运算符的右边,这是for循环无法做到的。