为了创建列表,最明显和记住的解决方案是使用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循环无法做到的。