当前位置: 首页 > 编程笔记 >

Python列表推导式、字典推导式与集合推导式用法实例分析

翟博雅
2023-03-14
本文向大家介绍Python列表推导式、字典推导式与集合推导式用法实例分析,包括了Python列表推导式、字典推导式与集合推导式用法实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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