Python推导式pythonic必备
【摘要】 推导式(又称解析式) 是Python的⼀种独有特性。推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体。 共有三种推导: - 列表(list)推导式 - 字典(dict)推导式 - 集合(set)推导式列表推导式 (list comprehensions)列表推导式(又称列表解析式) 提供了⼀种简明扼要的方法来创建列表。它的结构是在一个中括号里包含一个表达式, 然后是一个for语句, ...
推导式(又称解析式) 是Python的⼀种独有特性。
推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体。 共有三种推导:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
列表推导式 (list comprehensions)
列表推导式(又称列表解析式) 提供了⼀种简明扼要的方法来创建列表。
它的结构是在一个中括号里包含一个表达式, 然后是一个for语句, 然后是0个或多个for或者if语句。 那个表达式可以是任意的, 意思是你可以在列表中放入任意类型的对象。 返回结果将是⼀个新的列表, 在这个以if和for语句为上下⽂的表达式运⾏完成之后产生
规范 variable = [x for x in list if something == 2]
这⾥是另外⼀个简明例子:
multiples = [i for i in range(30) if i % 3 is 0] print(multiples)# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]123
列表推导式在有些情况下超赞, 特别是当你需要使⽤for循环来生成一个新列表。 举个例子, 通常一般人会这样做:
squared = []for x in range(10): squared.append(x**2)123
你可以使⽤列表推导式来简化它: squared = [x**2 for x in range(10)]
字典推导式(dict comprehensions)
字典推导式,使用的场景比较少,但是有一点是超级赞的!
问题:遇到字典的键值对互换,你会怎么操作?
使用for循环?
mydict={"a":1,"b":2,"c":3} mydict_new={}for key,val in mydict.items(): mydict_new[val]=key1234
使用zip?
mydict={"a":1,"b":2,"c":3} newdict=dict(zip(mydict.values(),mydict.keys()))12
say no,你应该使用字典推导式!
mydict={"a":1,"b":2,"c":3} newdict={v: k for k, v in some_dict.items()}ornewdict=dict([val,key] for key,val in mydict.items())1234
集合推导式(set comprehensions)
至于集合推导式,跟列表推导式大同小异,不过在去重方面是set的强项
举个栗子:
squared = {x**2 for x in [1, 1, 2]} print(squared)# Output: {1, 4}
作者|一梦七年诗
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)