推导式 : 英文 comprehension

支持推导式的有列表list      字典dict      集合set      注意元组没有 推导式,如果你那样去写,他会变成一个generator生成器对象

推导式会让代码更加简洁,易懂,更加pythonic

列表:

[      expression        
for  
.....   if .....  ]         #生成了一个列表对象

其中:expression 
是加入到列表中的元素的表达式 , 后面的for   if  则是对这个表达式进行重复和筛选的语句

#!/usr/bin/env python3
#coding:utf-8

li1 = [1 for i in range(5)]    

print(li1)    #[1, 1, 1, 1, 1]

li2 = [i for i in range(1,11) if i%2==0]

print(li2)    #[2, 4, 6, 8, 10]

li3 = [char.upper() for char in 'hello']
print(li3)   #['H', 'E', 'L', 'L', 'O']

li4 = [i*i for i in range(10)]

print(li4)   #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

li5 = [(m,n) for m in [1,2,3] for n in "abc"]
print(li5)
#[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

集合的推导式和列表一样,只不过集合或过滤掉重复 的元素

字典:

#!/usr/bin/env python3
#coding:utf-8

s = 'hello'

#字符串中每个字符出现的次数 char : times
d1 = {char:s.count(char) for char in s }
print(d1)
#这个字典在生成的时候发生了键的覆盖:'hello' 中'l' 出现了2次
#改进:

d2 = {char:s.count(char) for char in set(s)}
print(d2)

python 之 推导式的更多相关文章

  1. Python列表推导式和嵌套的列表推导式

    列表推导式提供了一个更简单的创建列表的方法.常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列. 例如,假设我们想创建一个平方 ...

  2. python的推导式 —— 列表推导式、集合和字典推导式

    python的推导式是用于快速处理数据的方法. 主要有:列表推导式.集合推导式和字典推导式 import time import numpy as np 列表推导式: 1. 速度快 t1 = time ...

  3. python字典推导式 - python基础入门(17)

    在昨天的文章中,我们介绍了关于python列表推导式 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{}内部. ...

  4. python 列表推导式 - python基础入门(16)

    截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高. 一.什么是推导式 推导式是从一个或者多个 ...

  5. python列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  6. Python之推导式、生成器表达式

    l = [i for i in range(10)] print(l) l1 = ['选项%s'%i for i in range(10)] print(l1) 1.把列表解析的[]换成()得到的就是 ...

  7. python列表推导式详解 列表推导式详解 字典推导式 详解 集合推导式详解 嵌套列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  8. Python生成器/推导式/生成器表达式

    一   生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样,取值方式和迭代器一样(__next__(),  send():  给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创 ...

  9. python各种推导式分析

    推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...

  10. Python——生成器&推导式

    生成器 生成器的本质就是迭代器,那么还为什么有生成器呢,两者唯一的不同就是迭代器都是Python给你提供能够的已经写好的工具或者通过数据转化得来的.而生成器是需要我们自己用Python代码构建的工具. ...

随机推荐

  1. JAVA定时执行任务的三种方法

    1.利用 java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务 Timer timer=new Timer(); timer.schedule(new ListBy ...

  2. C# 方法调用的切换器 Update 2015.02.02

    在编写应用程序时,我们经常要处理这样的一组对象,它们的类型都派生自同一个基类,但又需要为每个不同的子类型应用不同的处理方法. 通常的做法,最简单的就是用很多 if-else 去判断各自的类型,如下面的 ...

  3. SQL Server跨库复制表数据错误的解决办法

    SQL Server跨库复制表数据的解决办法   跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...

  4. 生产环境下一定要开启mysqlbinlog

    在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...

  5. topcoder SRM 594 DIV2 AstronomicalRecordsEasy

    此题主要考查的是求最长公共子序列 设A[i]:A[j] = a:b = ac:bc       B[ii]:B[jj] = c:d = ac:ad , 如果A[i]:A[j] = B[ii]:B[jj ...

  6. HDU 4417 Super Mario(划分树+二分)

    题目链接 #include <cstdio> #include <cstring> #include <algorithm> using namespace std ...

  7. PHP5 session 详解【经典】 -- 转帖

    PHP5 session 详解[经典] http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议.所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的.而越 ...

  8. [转]Visual Studio 实用扩展推荐

    本文转自 http://www.cnblogs.com/stg609/p/3726898.html Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的 ...

  9. 为公司无线网络启用802.1x协议

    1. EAP类型: EAP-PEAP, EAP-TLS, EAP-TTLS, EAP-MD5 TLS需要客户端服务器端都有证书; 而PEAP和TTLS只需要服务器端证书. 2. 身份验证协议: PAP ...

  10. SVN版本管理系统的安装 CentOS + Subversion + Apache + Jsvnadmin

    CI服务器:192.168.4.221 root用户操作                            建议安装前更新操作系统 # yum update 更新完成后重启 # reboot 安装 ...