python 基础篇 14 程程器表达式 内置函数
昨日内容回顾
可迭代对象:
内部含有__iter__方法的就是可迭代对象.
可迭代对象不能取值,因为内部不含有__next__方法.
可迭代对象 ---> 迭代器.
obj.__iter__()
iter(obj)
迭代器:
内部含有__iter__,__next__ 方法的对象.
迭代器的优点:
1,节省内存.
2,惰性机制.
3,单向,不可逆.
如何判断可迭代对象,迭代器.
1,__iter__ in dir(obj)
2,?
生成器:
自己用python代码写的迭代器就是生成器.
生成器的本身就是迭代器.
def func():
print(1111)
count = yield 222
print(count)
yield 333
g_obj = func()
g_obj.send(666)
g_obj.__next__()
--------------->>>>>>>>>>>>>本节重点 生成器表达式 列表推导式<<<<<<<<<<<<<<<<<-------------------
构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']
l1 = []
for i in range(1,14):
l1.append('python%d期' % i)
print(l1)
列表推导式:
# l3 = [ 'python%s期' % i for i in range(1, 14)]
# print(l3)
[变量(加工后的变量) for 变量 in iterable] 循环模式
# 优点:
# 1,节省代码,一行搞定.
# 2,看着高大上.
# 缺点:
# ,不好排错.
#整体:
# 凡是用列表推导式构造的列表对象,用其他方式都可构建.,
非常复杂的列表,列表推导式是构建不出的,
# 列表推导式比较有魔性.
# 构建一个列表:
# ['技师0号','技师1号'... '技师15号']
# print(['技师%s号' % i for i in range(16)])
# ['护士1号', '护士3号','护士5号', ...,'护士13号']
# print(['护士%s号' % i for i in range(1, 14, 2)])
# 分类:
# [变量(加工后的变量) for 变量 in iterable] 循环模式
# [变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式
# 10以内所有数的平方
# print([i*i for i in range(11)])
# 30以内所有能被3整除的数的平方
# print([i**2 for i in range(31) if i % 3 == 0])
# 100 以内所有的奇数.
# print([i for i in range(1,101,2)])
# print([i for i in range(101) if i % 2 == 1])
生成器表达式
1.把列表解析的[]换成()得到的就是生成器表达式
2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
g_obj = ('python%s期' % i for i in range(1,14)) # 循环模式
g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 筛选模式
print(g_obj)
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
for i in g_obj1:
print(i)
# 生成器:两种方式:
# 生成器函数. yield
# 生成器表达式
# 为什么有生成器:
# 生成器本身是自己用python代码构建的,这样就满足了个性化需求,满足以后你工作中需要.
#把列表names中有两个"e"的字符取到
# names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
# ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
列表推导式
# l2 = [name for i in names for name in i if name.count('e') == 2]
普通方法:
# l1 = []
# for i in names:
# for name in i:
# if name.count('e') == 2:
# l1.append(name)
# print(l1)
# print(l2)
把mcase中的K,V键值互换位置
# mcase = {'a': 10, 'b': 34}
# print({mcase[i]: i for i in mcase})
------>>>>>>>内置函数:
这个东西慢慢学吧,可以按住Ctrl看源码,也可以help一下,用着就都会了
1.1作用域相关
locals :函数会以字典的类型返回当前位置的全部局部变量。
globals:函数以字典的类型返回全部全局变量。
a = 1
b = 2
print(locals())
print(globals())
# 这两个一样,因为是在全局执行的。 ########################## def func(argv):
c = 2
print(locals())
print(globals())
func(3) #这两个不一样,locals() {'argv': 3, 'c': 2}
#globals() {'__doc__': None, '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000024409148978>, '__spec__': None, '__file__': 'D:/lnh.python/.../内置函数.py', 'func': <function func at 0x0000024408CF90D0>, '__name__': '__main__', '__package__': None}
1.2.1 字符串类型代码的执行 eval,exec,complie
eval('2 + 2') # 4
n=81
eval("n + 4") # 85
eval('print(666)') # 666
exec:执行字符串类型的代码。
s = '''
for i in [1,2,3]:
print(i)
'''
exec(s)
complie没用,可以不记
其他函数在这我就不一一列举了,如有需求可找度娘
python 基础篇 14 程程器表达式 内置函数的更多相关文章
- python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)
一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...
- Python开发【第四篇】: 三大器和内置函数
内容概要 函数名 闭包 迭代器 生成器 推导式与表达式 内置函数 装饰器 初识递归 1.函数名 函数名的运用: 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 01. 函数名的 ...
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- Python装饰器、内置函数之金兰契友
装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种.所以也可以理解装饰器是一种特殊的函数.因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展, ...
- 万恶之源 - Python装饰器及内置函数
装饰器 听名字应该知道这是一个装饰的东西,我们今天就来讲解一下装饰器,有的铁子们应该听说,有的没有听说过.没有关系我告诉你们这是一个很神奇的东西 这个有多神奇呢? 我们先来复习一下闭包 def fun ...
- Python成长之路第二篇(1)_数据类型内置函数用法
数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...
- python笔记5:装饰器、内置函数、json
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- Python装饰器及内置函数
装饰器 听名字应该知道这是一个装饰的东西,我们今天就来讲解一下装饰器,有的铁子们应该听说,有的没有听说过.没有关系我告诉你们这是一个很神奇的东西 这个有多神奇呢? 我们先来复习一下闭包 def fun ...
随机推荐
- Android学习笔记_5_文件操作
1.Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. package com.example.servi ...
- PAT1087. All Roads Lead to Rome
PAT1087. All Roads Lead to Rome 题目大意 给定一个图的边权和点权, 求边权最小的路径; 若边权相同, 求点权最大; 若点权相同, 则求平均点权最大. 思路 先通过 Di ...
- C#位数不足补零
C#位数不足补零:int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString ...
- android SQLITE的基本使用总结(八)
sharedPreferences只适合存储比较简单的数据和键值对,支持不同的数据类型 文件存储连键值对都没有,不会进行任何格式化处理,存储简单的二进制或者文本数据 sqlite则能处理一些数据量大, ...
- 金s办公软件web前端笔试题
1. var arr = []; arr['a'] = 1; console.log(arr.length); // A arr['4'] = 2; console.log(arr.length); ...
- Oracle 差异性增量 和 累计增量 原理(转)
RMAN一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,我们不需要在从头开始备份了,只需要备份自上次已备份之后的数据块即可. Oracle 9i 共有五种级别 0 1 2 3 ...
- 统计iOS产品不同渠道的下载量
如何统计iOS产品不同渠道的下载量? 一.前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量.原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文 ...
- GIt+jenkins代码自动上线
代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...
- 吐血分享:QQ群霸屏技术教程之霸屏实施细则
小号,再不养,成本抗不住了;QQ群,再不玩,真的就玩不动啦. 霸屏系列,坚持下来差不多10来篇,最近更新的几篇,算是霸屏系列的更新版,毕竟相当的规则变动了. 经营自己,是一种前瞻能力,霸屏十篇,有多少 ...
- tarnado源码解析系列一
目录 tarnado tarnado源码安装 tarnado测试程序 application类的解析 一. tarnado简介 最近在学习Python,无意间接触到的tarnado,感觉tarnado ...