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

一、列表推导式、生成器表达式:

# li = []# for i in range(1,101):#     li.append(i)# print(li)

#l1 = [python1期,python2期,python3期.....]# l1 = []# for i in range(1,12):#     l1.append(‘python%s期‘ % i)# print(l1)#一行搞定,列表推导式:用列表推导式能够构建的任何列表,用别的都可以构建。#一行,简单,感觉高端。但是,不易排错。# li = [i for i in range(1,101)]# print(li)# l2 = [‘python%s期‘ % i for i in range(1,12)]# print(l2)#循环模式#[经过加工的i for i in 可迭代对象]

l_obj = (‘python%s期‘ % i for i in range(1,12))print(l_obj)print(l_obj.__next__())print(l_obj.__next__())print(l_obj.__next__())

#列表推导式:一目了然,占内存。#生成器表达式:不易看出,节省内容。

#循环模式#[经过加工的i for i in 可迭代对象]# l2 = [i*i for i in range(1,11)]# print(l2)#筛选模式#[经过加工的i for i in 可迭代对象 if 条件 筛选]# l3 = [i for i in range(1,101) if i % 3 == 0]# print(l3)

# l3 = [i for i in range(31) if i % 3 == 0]# print(l3)## l3 = [i**2 for i in range(31) if i % 3 == 0]# print(l3)

# names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],#          [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]## l4 = [name for i in names for name in i if name.count(‘e‘) == 2]# print(l4)

# mcase = {‘a‘: 10, ‘b‘: 34}# mcase_frequency = {mcase[k]: k for k in mcase}# print(mcase_frequency)

squared = list({x**2 for x in [1, -1, 2]})print(squared)

二、内置函数:
"""len()count()print()max()min()dir()list()eval()open()str()isinstance()format()type()tuple()iter()input()int()set()frozenset()"""#其他相关:#***eval:执行字符串类型的代码,并返回最终结果# print(eval(‘3 +4‘))

# ret = eval(‘{"name":"老男孩"}‘)

# print(ret,type(ret))

# print(eval(‘3+4‘))

# ret = eval(‘{"name":"老男孩"}‘)

# print(ret,type(ret))

#***exec:执行字符串类型的代码,流程语句。# ret1 = ‘‘‘# li = [1,2,3]# for i in li:#     print(i)# ‘‘‘

# print(exec(‘3 +4‘))

# print(exec(ret1))#compile:将字符串类型的代码编译。代码对象能够通过exec语句来# 执行或者eval()进行求值。# code1 = ‘for i in range(0,10): print (i)‘

# compile1 = compile(code1,‘‘,‘exec‘)# exec (compile1)

#***print()#print(self, *args, sep=‘ ‘, end=‘\n‘, file=None)# print(333,end=‘‘)# print(666,)# print(111,222,333,sep=‘|‘)

# with open(‘log‘,encoding=‘utf-8‘,mode=‘a‘) as f1:#     print(‘5555‘,file=f1)

#*hash哈希# print(hash(12322))  # 数字不变

# print(hash(‘123‘))   #是个地址

# print(hash(‘arg‘))    #是个地址

# print(hash(‘alex‘))  #是个地址

# print(hash(True))    #1# print(hash(False))    #0

# print(hash((1,2,3)))    #地址

#*help:函数用于查看函数或模块用途的详细说明。# print(help(list))

#***callable:函数用于检查一个对象是否是可调用的。# 如果返回True,object仍然可能调用失败;# 但如果返回False,调用对象ojbect绝对不会成功。# def func1():#     print(555)# a = 5# f = func1

# print(callable(f))# print(callable(a))

#***dir# print(dir(list))

# *next# 首先获得Iterator对象:# it = iter([1, 2, 3, 4, 5])# # 循环:# while True:#     try:#         # 获得下一个值:#         x = next(it)#         print(x)#     except StopIteration:#         # 遇到StopIteration就退出循环#         break#*iter()

# *int# print(int())  # 0

# print(int(‘12‘))  # 12## print(int(3.6))  # 3## print(int(‘0100‘,base=2))  # 将2进制的 0100 转化成十进制。结果为 4

# print(type(3.14))  # float

# print(float(3))

‘‘‘

complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。‘‘‘

‘‘‘*bin:将十进制转换成二进制并返回。

*oct:将十进制转化成八进制字符串并返回。

*hex:将十进制转化成十六进制字符串并返回。‘‘‘# print(bin(5))  # 0b101

# print(oct(7))  # 0o7

# print(oct(9))  # 0o11

# print(hex(10))  # 0xa

# print(hex(15))  # 0xf# print(hex(19))  # 0x13

#*abs:函数返回数字的绝对值。# print(abs(-20))

# *divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。# print(divmod(11,3))  # (3, 1)

#round:保留浮点数的小数位数,默认保留整数。# print(round(3.1415))

# print(round(3.1415,3))

#pow:求x**y次幂。(三个参数为x**y的结果对z取余)# print(pow(2,3))

# print(pow(2,3,5))

#***sum:对可迭代对象进行求和计算(可设置初始值)。# print(sum([1,2,3]))

# print(sum([1,2,3],100))

#***max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。# print(max([1,2,3]))

# ret = max([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最大值# print(ret)

#***min# ret = min([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最小值# print(ret)

#***reversed:将一个序列翻转,并返回此翻转序列的迭代器。ite = reversed([‘a‘,2,3,‘c‘,4,2])# print(ite)# for i in ite:#     print(i)

#slice:构造一个切片对象,用于列表的切片。

# li = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘]# l2 = [‘a‘,‘b‘,‘c‘,1,2,3,4,54]# sli_obj = slice(3)# print(li[sli_obj])# print(l2[sli_obj])

# sli_obj = slice(7,0,-2)# print(li[sli_obj])

#*** format 用于格式化输出很重要# s1 = format(‘test‘, ‘<30‘)

# print(format(‘test‘, ‘<30‘))

# print(format(‘test‘, ‘>20‘))

# print(format(‘test‘, ‘^20‘))

# print(len(s1))

#bytes:只能编码,将unicode ---> 非unicode  bytes(s1,encoding=‘utf-8‘)。# s1 = ‘老男孩‘

# s2 = s1.encode(‘utf-8‘)

# s22 = bytes(s1,encoding=‘utf-8‘)

# print(s2)

# print(s2.decode(‘utf-8‘))

#bytearry:返回一个新字节数组。这个数组里的元素是可变的,# 并且每个元素的值范围: 0 <= x < 256。# ret = bytearray(‘alex‘,encoding=‘utf-8‘)  # [65,108,101,120]# print(id(ret))# print(ret)# print(ret[0])  # 97# ret[0] = 65# print(ret)# ret = memoryview(bytes(‘你好‘,encoding=‘utf-8‘))# print(len(ret))  # 6 utf-8的bytes类型,放在一个list中 [\xe4,\xbd,\xa0,\xe5,\xa5,\xbd]# print(ret)# print(bytes(ret[:3]).decode(‘utf-8‘))# print(bytes(ret[3:]).decode(‘utf-8‘))# print(‘你好‘.encode(‘utf-8‘))‘‘‘# *ord:输入字符找该字符编码的位置 unicode# *chr:输入位置数字找出其对应的字符 unicode# ascii:是ascii码中的返回该值,不是就返回‘‘‘# print(ord(‘a‘))

# print(ord(‘中‘))

# print(chr(98))

# print(chr(20013))

# print(ascii(‘a‘))

# print(ascii(‘中‘))  # ‘\u4e2d‘

# %r  原封不动的写出来name = ‘taibai‘# print(‘我叫%r‘ % name)

#*** repr 原形毕露# print(repr(‘{"name":"alex"}‘))

# print(‘{"name":"alex"}‘)

# *** sorted  key

li = [1,-2,-7,8,5,-4,3]# print(sorted(li,reverse=True,key=abs))

L = [(‘a‘, 1), (‘c‘, 3), (‘d‘, 4),(‘b‘, 2), ]# sorted(L, key=lambda x:x[1])               # 利用key

# *** enumerate:枚举,返回一个枚举对象。 (0, seq[0]), (1, seq[1]), (2, seq[2]),

# li = [‘老男孩‘, ‘alex‘, ‘wusir‘, ‘嫂子‘, ‘taibai‘]# print(enumerate(li))# for i in enumerate(li):#     print(i)   #打印出来是字符串

# print(‘__iter__‘ in dir(enumerate(li)))# print(‘__next__‘ in dir(enumerate(li)))# li = [‘老男孩‘, ‘alex‘, ‘wusir‘, ‘嫂子‘, ‘taibai‘]# for k,v in enumerate(li):#     print(k,v)

# for k,v in enumerate(li,1):#     print(k,v)

# * all  可迭代对象中,全都是True才是True# * any  可迭代对象中,有一个True 就是True# print(all([1,2,True,0]))

# print(any([1,‘‘,0]))

# *** zip 拉链方法 形成元组的个数与最短的可迭代对象的长度一样,然后......l1 = [1, 2, 3, 4]l2 = [‘a‘, ‘b‘, ‘c‘, 5]l3 = (‘*‘, ‘**‘, (1,2,3), 777)l4= (‘0‘, ‘99‘, (1,2,3), 777)# print(‘__iter__‘ in dir(zip(l1,l2,l3,l4)))

# print(‘__next__‘ in dir(zip(l1,l2,l3,l4)))

# for i in zip(l1,l2,l3,l4):#     print(i)

#***filter 过滤 通过你的函数,过滤一个可迭代对象,返回的是True# 类似于[i for i in range(10) if i > 3]# 列表推导式:# l=[i for i in range(0,10) if i > 3]# print(l)

# def func(x):#     return x % 2 == 0# ret = filter(func,[1,2,3,4,5,6,7])# print(ret)# for i in ret:#     print(i)

# 例题,将列表中大于10的数都打印出来# l = [1,2,43,54,34,23]# 方法一:filter# ret = filter(lambda x: x>10,l)# for i in ret:#     print(i)#方法二:列表推导式# l1=[i for i in l if i >10]# print(l1)

# li = [i for i in [1,2,3,4,5,6,7] if i % 2 == 0]# print(li)

#***map很重要,for循环# def square(x) :            # 计算平方数#     return x ** 2# print(map(square,[1,2,3,4,5]))# for i in map(square,[1,2,3,4,5]):#     print(i)

原文地址:https://www.cnblogs.com/zzw731862651/p/8719029.html

时间: 2024-11-07 11:08:25

day14,列表推导式,生成器表达式,内置函数的相关文章

(列表推导式,生成器表达式,内置函数)

一,列表生成式 示例一: 生成1~100的列表 生成1-100的列表 1 2 3 4 5 li = [] for i in range(1,101):     li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期~11期li = []for i in range(1,12): li.append('python{}期'.format(i))print(li) 执行输出: ['python1期', 'python2期', 'python3期'...]

函数生成器、推导式及python内置函数

函数生成器.推导式及python内置函数 函数生成器 生成器的定义 在 Python 中,使用了 yield 的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器. 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行. 调用一个生成器函数,返回的是一个迭代器对象. 生成器与迭代器的区别 生成

列表推导式----生成器表达式

列表推导式: 基本形式: [表达式  for  参数  in  可迭代对象]   或者 [表达式  for  参数  in  可迭代对象  if   条件] 实例: 1 l = [] 2 for i in range(100): 3 l.append('egg%s' %i) 4 print i 5 6 #不带if条件 7 l = ['agg%s' %i for i in range(100) ] 8 9 #带if条件 10 l = ['agg%s' %i for i in range(100)

三元表达式 列表推导式 生成器表达式

# 三元表达式# def my_max(x,y):# if x >= y:# return x# else:# return y## res=my_max(1,2)# print(res) # 2 # x=10# y=20# res=x if x >= y else y## print(res) # 20 # name=input('>>:name').strip()# res='Yes' if name == 'OBOS' else 'No'## print(res) # 列表推

python基础-三元表达式/列表推导式/生成器表达式

1.三元表达式:如果成立返回if前的内容,如果不成立返回else的内容 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式:l=['egg'+str(i) for i in range(1,11)] print(l) 3.生成器表达式: l=('egg'+str(i) for i in range(1,11) if i >6) for i in l: print(i) 原文地址:http

python函数六(生成器,内置函数)

一.生成器 生成器三种方式: 1)生成器函数 2)数据转化 def gener(): print(111) yield 222 print(333) count = yield 444 print(count) print(555) yield 666 g = gener() print(g) # print(list(g)) print(g.__next__()) print(g.__next__()) print(g.send('asd')) print(list(g)) # 输出结果: #

python之迭代器生成器和内置函数,匿名函数

今天学习了迭代器生成器以及内置函数和匿名函数,说实话有些懵圈,有些难度了. 一.迭代器和生成器 1.如何从列表.字典中取值的: index索引 for循环 凡是可以使用for循环取值的都是可迭代的 (1)可迭代协议:内部含有__iter__方法的都是可迭代的 (2)迭代器协议:内部含有__iter__方法和__next__方法的都是迭代器 什么是可迭代的:内部含有__iter__方法的都是可迭代的 什么是迭代器:迭代器=iter(可迭代的),自带一个__next__方法 可迭代最大的优势:节省内

4)装饰器、迭代器、生成器以及内置函数

 装饰器.迭代器.生成器以及内置函数 装饰器: 原函数前后增加功能,切不改变函数的原本使用方式 import timedef wrapper(f):    def inner():        start = time.time()        f()        end = time.time()        print('执行效率为%s'%(end-start))    return inner @wrapperdef func():    print('this is func')

Python学习笔记2:构造序列:列表推导和生成器表达式

欢迎访问个人网站:www.comingnext.cn 1. 关于Python内置序列类型 a. 按能否存放不同类型的数据区分 容器序列: list.tuple 和collections.deque这些序列能存放不同类型的数据 扁平序列: str.bytes.bytearray.memoryview和array.array,这类序列只能容纳一种类型. b. 按能否被修改来分类 可变序列: list.bytearray.array.array.collections.deque 和 memoryvi