本文实例讲述了Python列表推导式、字典推导式与集合推导式用法。分享给大家供大家参考,具体如下:
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:
列表(list)推导式
字典(dict)推导式
集合(set)推导式
一、列表推导式
1、使用[]生成list
基本格式
variable = [out_exp_res for out_exp in input_list if out_exp == 2]
out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。
if out_exp == 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]
例二:
def squared(x): return x*x multiples = [squared(i) for i in range(30) if i % 3 is 0] print multiples # Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
2、使用()生成generator
将俩表推导式的[]改成()即可得到生成器。
multiples = (i for i in range(30) if i % 3 is 0) print(type(multiples)) # Output: <type 'generator'>
二、字典推导式
字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:
例子一:大小写key合并
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3} mcase_frequency = { k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys() if k.lower() in ['a','b'] } print mcase_frequency # Output: {'a': 17, 'b': 34}
例子二:快速更换key和value
mcase = {'a': 10, 'b': 34} mcase_frequency = {v: k for k, v in mcase.items()} print mcase_frequency # Output: {10: 'a', 34: 'b'}
三、集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
例一:
squared = {x**2 for x in [1, 1, 2]} print(squared) # Output: set([1, 4])
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python数组操作技巧总结》、《Python字符串操作技巧汇总》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python数据结构与算法教程》
希望本文所述对大家Python程序设计有所帮助。
rank ▲ ✰ vote url 57 386 107 665 url 字典推导式 我喜欢列表推导式的语法. 它能不能用来创建字典?这样: mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work :( 在Python2.6或更早的版本,字典生成器可以接受迭代的键/值对: d = dict((key, value) for (ke
可能你见过列表推导时,却没有见过字典推导式,在2.7中才加入的: d = {key: value for (key, value) in iterable}
列表推导式 宏 for 和 doseq 可以用来做list comprehension. 它们支持遍历多个集合 (最右边的最快) ,同时还可以做一些过滤用 :when 和 :while。 宏 for 只接受一个表达式 , 它返回一个懒惰集合作为结果. 宏 doseq 接受任意数量的表达式, 以有副作用的方式执行它们, 并且返回 nil . 下面的例子会打印一个矩阵里面 所有的元素出来。 它们会跳过
本文向大家介绍python推导式的使用方法实例,包括了python推导式的使用方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。 定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创建一个新的序列(比如:列表,集合,字典等等)。通过这个性能,不仅可以少写很多代码,而且性能上也更快。 Python 里有四种推导
如果需要生成一个长度为 3、内容为 0 的列表,可以使用如下的代码来完成这项任务: list = [0, 0, 0] 如果需要生成一个长度为 100、内容为 0 的列表,使用如上的方式完成,需要在括号中书写 100 个 0,既繁琐又容易出错,显然是不合适的。可以使用动态的方式完成这项任务: list = [] for i in range(100): list.append(0) 在第
问题 你有一个对象数组,想将它们映射到另一个数组,类似于 Python 的列表推导。 解决方案 使用列表推导,但不要忘记还有 [mapping-arrays]( http://coffeescript-cookbook.github.io/chapters/arrays/mapping-arrays) 。 electric_mayhem = [ { name: "Doctor Teeth", in