python 生成函数图_python中的生成器表达式,各种推导式及内置函数

一:列表推导式

表现形式:[变量(加工后的数据) for 变量i in 可迭代的数据类型]

例一:30以内所有能被3整除的数

multiples = [i for i in range(30) if i % 3 is0]print(multiples)#Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

例二:30以内所有能被3整除的数的平方

l1=[i**2 for i in range(1,31) if i%3==0]print(l1)

例三:找到嵌套列表中名字含有两个‘e’的所有名字

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],

['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]

l1=[name for i in names for name in i if name.count("e")==2]print(l1)

ps:把列表解析的[]换成()得到的就是生成器表达式,其中,列表推导式比较直观,占内存,生成器表达式不容易看出内容,省内存.

l1=(i**2 for i in range(1,31) if i%3==0)print(l1) # at 0x000001DE23D4DE58>

print(l1.__next__())

二:字典推导式

例一:将一个字典的key和value对调

mcase = {'a': 10, 'b': 34}

mcase_frequency= {mcase[k]: k for k inmcase}print(mcase_frequency)

三:集合推导式

计算列表中每个值的平方,自带去重功能。

squared = {x**2 for x in [1, -1, 2]}print(squared)#Output: set([1, 4])

四:python中的内置函数

1,print的用法

#1,去掉换行符

print('666',end='')print('666')#2,添加分割符

print(1,2,3,4,5,sep='|') #1|2|3|4|5#3,写入文件

f = open('file','w',encoding='utf-8')print(666,file=f)

f.close()

2,

locals() 将局部的变量储存起来

globals() 将全局的变量,函数名,等等 储存起来.

deffunc():

name= 'alex'

print(locals())print(globals())

func()

3 , help(xxx) 将你查询的对象所有信息都拿出来.

4 , abs()取绝对值

print(abs(-1))print(abs(1))

5, 最大值和最小值

#1求绝对值最大的数

ret = max(1,2,-3,key=abs)print(ret)#2求最小值

ret = min([1,2,3])print(ret)

6,sum 求和

a=sum([1,2,8])print(a)#计算列表中的和,再附加一个数的和

ret = sum([1,2,3],10)print(ret)

7,callable 判断此变量是不是函数名

name = 'alex'

print(callable(name))deffunc():print(666)print(callable(func))

8, hash() 通过哈希表的规则,将对象转换成哈希值

print(hash('fdsakfhdsafsda'))print(hash('fd'))print(hash(('a','b')))print(hash(True))

9, all 可迭代对象里面的所有的值转化成bool值如果都是True则,返回True

print(all([1,2,3,0]))

10, 进制转换

#十进制转化成二进制

print(bin(100))#将十进制转化成八进制

print(oct(9))#将十进制转化成十六进制

print(hex(33))

11,数据类型 float ,complex(复数)

print(1.35432,type(1.35432))print(float(3))

12, divmod() 分页

print(divmod(7,2)) #(商,余数)

13, enumerate(iterable,start 起始值) 枚举

l = ['手机','电话','娃娃',]

for k,v in enumerate(l,1):

print(k,v)

14, eval 有返回值 除去字符串两边的引号,返回里面的内容

exec 没有返回值 除去字符串两边的引号,执行里面的代码

s = "{'name':'alex'}"

print(eval(s),type(eval(s))) #{'name': 'alex'}

s1 = "1+2+3+4"

print(eval(s1)) #10

code = '''for i in range(10):

print(i)'''

exec(code)

15,

isinstance(对象 类 ) ,判断一个对象和一个类有没有关系,而且能够检测到继承关系。

type 只单纯的判断类,不能检测到继承关系。

issubclass(子类 父类) ,如果返回True,说明有继承关系。

ContractedBlock.gif

ExpandedBlockStart.gif

class B:pass

class A(B):passa=A()print(isinstance(a,A))print(isinstance(a,B))print(type(a) isA)print(type(a) isB)

isinstance(a,A)

View Code

ContractedBlock.gif

ExpandedBlockStart.gif

class B:pass

class C(B):pass

class D(C):pass

print(issubclass(C,D))print(issubclass(D,C))print(issubclass(B,C))print(issubclass(C,B))print(issubclass(D,B))

View Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值