Python学习笔记 - 列表生成式

简介


列表生成式/推导式(List Comprehensions),是Python提供的创建新列表的简明方法。
它由表达式,for循环以及括号组成,表达式可以是任何东西,通过表达式得到的结果,可以获得新的列表。

用法


通过一个列表,生成新的列表,一般的写法是这样:

list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
list_new = []
for item in list_old:
    list_new.append(item + item)
print(list_new)
#输出:['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ', 'KK', 'LL', 'MM', 'NN']

但是这样写太繁琐了,不够优雅,而使用列表生成式呢?这样写:

list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
list_new = [ item + item for item in list_old]
print(list_new)
#输出:['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ', 'KK', 'LL', 'MM', 'NN']

结果是一样的,但是只用了一句话就实现了上面的功能。
如果要在旧列表中加入条件判断,筛选结果为true的元素组成新列表,可以这么写:

list_old = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
#enumerate方法,可以同时获取索引与元素,然后筛选出索引为双数的元素
list_new = [item + item for index,item in enumerate(list_old) if index % 2 == 0]
print(list_new)
#输出:['AA', 'CC', 'EE', 'GG', 'II', 'KK', 'MM']

总结

完整的列表生成式的基本语法格式为:

[ expression for item in old_list if conditional ]

expression
表达式基于旧列表中的每个元素。
for item in old_list
遍历所有旧列表的元素
if conditional
带有if语句的过滤器

参考

廖雪峰Python教程 - 列表生成式
PythonForBeginners - List Comprehensions in Python

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,140评论 0 13
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,219评论 1 118
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,816评论 0 5
  • 最近的感慨颇多,好久未动笔,现在的我属于提笔就忘的人群,早已遗忘了,多年以前自己殷殷的喜好,看多了世间的红男绿女,...
    星颍晴薇阅读 1,937评论 0 1
  • 🤧尽量避开周五购票 大家可以打开各大app看一下价格 周末的机票价格 嘿嘿嘿 🤧周二下午、周三凌晨、周日为每周票价...
    馋猪阅读 4,241评论 0 1