列表推导式和生成器表达式和内置函数

 

 

基础学习之第十四天(列表推导式和生成器表达式和内置函数)

 

迭代器的优点:
  1.节省内存
  2.惰性机制
  3.单向,不可逆
如何判断它是否是可迭代对象和迭代器

  可迭代对象->迭代器

  可迭代对象__iter__():就会变成迭代器
    1.'__iter__'in dir(obj):True或Flase,返回True就代表他是可迭代对象
    2.引入模块
      from collections import Iterator(迭代器)
      print(isinstance(参数名,Iterator)
      from collections import Iterable(迭代对象)
      print(isinstance(参数名,Itera)ble
  生成器:
    自己用python代码写的迭代器就是生成器
    生成器本身就是迭代器
生成器的表达式和列表推倒式
  1.列表推导式
    [变量(加工后的变量) for 变量 in iterable(迭代对象)] # 循环模式
    [变量(加工后的变量) for 变量 in iterable if 条件] # 筛选模式
  2.生成器表达式:和列表表达式一样只是括号不一样

              (变量(加工后的变量) for 变量 in iterable(迭代对象)) # 循环模式
    (变量(加工后的变量) for 变量 in iterable if 条件) # 筛选模式

    优点:1.节省代码
    缺点:不好排错
    整体:凡是用列表推导式构造的,用其它方式也可以,非常复杂的列表,列表推导式是构造不出来的

内置函数

 

1.1作用域相关
a =33
b = 22
def func():
    a = 1
    print(globals(),'\n',locals())
func()
1.21其他相关
字符串类型代码的执行 eval,exec,complie
print(eval('1*2*3*4*5*6*7*8*9'))
li = """
for i in range(10):
    print(i)
"""
exec(li)
1.22输入输出相关print 和 input
k = print(1,2,4,6,sep='******',end='')
with open('试验品.txt','w',encoding='utf-8') as f:
    print('111111111111',1111,file=f,sep='****')
    print('111111111111',1111,file=f,sep='****')
    print('111111111111',1111,file=f,sep='****')
1.23内存相关hash():获取一个可哈希对象的哈希值,id(返回内存地址)
print(hash(1020000000000000000))# 数字最多19个才能保证可哈希值和数值一样,超过的话就会变成别的
print(hash('1111111111111111111')) # 哈希字符串
print(hash((1,2,3,4))) # 哈希元组
print(hash(True)) # 哈希bool值
1.24文件打开和模块相关操作open()和import()函数用于动态加载类和函数 
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
1.25 help():帮助
a = 1
help(a)#查看帮助
1.26 调用相关 callable()能调用返回True 不能调用返回False
按 Ctrl+C 复制代码

 

def func():
a = 123
b = 147
def func1():
aa = 1111
bb = 1111
return func1
print(callable(func))

按 Ctrl+C 复制代码

posted @ 2018-06-20 17:54  赵振宇  阅读(135)  评论(0编辑  收藏  举报