内置函数补充

 内置函数作业:

#1,默写map和filter:
def pow(x):
    return x*x
l = [1,2,3,4,5]
print(map(pow,l))
print(list(map(pow,l)))

def is_odd(x):
    return x%2==1
l = [1,2,3,4,5]
print(list(filter(is_odd,l)))

#2,整理内置函数的思维导图,和博客,标注红色和黄色的必须都会

# 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name = ['alex','wupeiqi','yuanhao','nezha']
ret = map(lambda x:x+'_sb',name)
for i in ret:
    print(i)
print(i) #结果为 'nezha_sb'因为for循环运行完了,i对应最后一个值
print(list(ret))  #结果为[],因为ret作为一个迭代器,此时已经被for循环取完值了,已经取不到值了,故为空


# 4.用filter函数处理数字列表,将列表中所有的偶数筛选出来
num = [1,3,5,6,7,8]
ret = list(filter(lambda x:x%2==0,num))
print(ret)

# 5.随意写一个20行以上的文件
# 运行程序,先将内容读到内存中,用列表存储。
# 接收用户输入页码,每页5条,仅输出当页的内容
# with open('somewhere',encoding='utf-8') as f:
#     data = f.readlines()
# pages,mod = divmod(len(data),5)
# page_num = int(input('你想看第几页:'))
# if mod:
#     pages +=1
# if page_num > pages or page_num < 0:
#     print('input wrong page')
# elif page_num == pages and mod != 0:
#     for i in mod:
#         print(data[(page_num-1)*5+i].strip())
# else:
#     for i in range(5):
#         print(data[(page_num - 1) * 5 + i].strip())


# 6.如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65}
]

# 6.1.计算购买每支股票的总价
ret = map(lambda dic:{dic['name']:round(dic['shares']*dic['price'],2)},portfolio)
print(list(ret))
# 6.2.用filter过滤出,单价大于100的股票有哪些

res = filter(lambda dic:dic['price']>100,portfolio)
print(list(res))
内置函数作业

Python中应该使用%还是format来格式化字符串?

内置函数补充:

1,和作用域相关的:
locals():以字典形式返回本地所有的局部变量  如果是在函数内部打印,那么函数内部所有的变量就会以 key value的形式打印出来
golbals():以字典形式返回全局所有的变量

2,迭代器/生成器相关的: range() iter() next()

3.其他12个

dir() 查看内置属性

callable() 只要能 后面加括号的都能调用,比如print,golbals, a
= 1,此处a就不能调用

help() 类似dir,查看方法名字及用法
import import time 相当于 time = __import('time')_

oper() 返回文件句柄

id() 返回内存地址
hash() 对于可哈希的数据类型,转换为哈希值,数字的哈希值是它本身, 列表,字典这种可变的没哈希值 对于相同可hash数据的hash值在一次程序的执行过程中总是不变的,而且它的哈希值固定那么长 所以对于一些很长的字符串,可以替换为它的哈希值 字典的寻址方式,把key的哈希值返回的内存地址,让value指向它,

input()

print()

print('我们的祖国是花园',end='')
print('我们的祖国是花园',end='') #默认结尾是 ,现在让结尾为空,

print(1,2,3,4,sep='|') #默认sep是空格,现在让sep是| 打印出来为 1|2|3|4
f = open('file','w') print('aaaa',file=f) f.close() >>>>>>>>>>>则此时print不输出到屏幕,会写入到 file这个文件里 #打印进度条

flush:立即把内容输出到流文件,不做缓存


eval() eval(
'1+2+3+4') 输出10 有返回值
exec() eval('1+2+3+4') 输出None 因为它没有返回值,执行了没结果 eval和exec都可以执行字符串类型的代码,但是eval有返回值,exec没有 注意!!eval谨慎使用,只能用在你明确知道你要执行的代码是什么, 或者实在没办法,用了比较方便。因为不安全,很容易被攻击 只要攻击者修改你要eval的内容,程序就会崩溃
eval:适合有结果的简单运算
exec: 简单流程控制 code = for i in range(10): print(i*'*') ''' exec(code)

compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
` code1 = 'for i in range(0,10): print (i)' compile1 = compile(code1,'','exec') exec(compile1) code2 = '1 + 2 + 3 + 4' compile2 = compile(code2,'','eval') print(eval(compile2)) code3 = 'name = input("please input your name:")' compile3 = compile(code3,'','single') exec(compile3) #执行时显示交互命令,提示输入 print(name) name #执行后name变量有值 "'pythoner'" compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

divmod(数1,数2) 除余

round(float,精确位数) 精确值

pow(数1,数2,数3) 数1的数2次方 幂运算 , 数3是取余,默认为空
sum(iterable,start) start([1,2],10) 输出13 从10开始,加上iterable里的和

min(1,2,3,-4,key=abs) 可以加方法 输出为1
max(1,2,3,-4,key=abs) 可以加方法 输出为-4 因为abs为绝对值,原值为-4
继楼上的内置函数补充
reversed():   l = [1,2,3,4,5]  用l.reverse()会把原列表反转
              l2 = reversed(1) 保留原列表,返回一个反向的迭代器

slice:  sli = slice(1,5,2),,, l[sli] == l[1:5:2]

bytes   转换成bytes类型
      >>> bytes('你好',encoding='utf-8')
           b'xe4xbdxa0xe5xa5xbd'

bytearray:可以修改字符串,但是前提要知道字符串的每个字符对应的索引,即列表的index
           通过修改二进制字符,达到节省内存的作用

ord('好')  #22909  转换Unicode为数字
ord('a')   #97
chr(22909)  #'好'   转换数字为unicode

ascii 用法同ord,不过 只要是ASCII码中的内容,就打印出来,不是就转换成u

repr():
print(repr(1))    结果为1
print(repr('1'))  结果为 '1'  把数据类型打印出来
'你好%r'%name   结果一样,此处%r就是用到了repr


filter(func,iterable) 注意此处func是内存地址 #返回为一个iterator
def is_odd(x):
    return x%2==1
ret = filter(is_odd,[1,4,2,453,9,6,8])
for i in ret:
    print(i)   >>>1,453,9
相当于列表推导式:
[i for i in [1,4,2,453,9,6,8] if i%2==1]


map()
Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。
如果有其他的可迭代参数传进来,
map函数则会把每一个参数都以相应的处理函数进行迭代处理。
map()函数接收两个参数,一个是函数,一个是序列,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

有一个list, L = [1,2,3,4,5,6,7,8],
我们要将f(x)=x^2作用于这个list上,
那么我们可以使用map函数处理。

L = [1,2,3,4,]
def pow2(x):
    return x*x
map(pow2,L)   #>>>>[1, 4, 9, 16]


sorted():
print(sorted(l,key=abs,reverse=True))      # 生成了一个新列表 不改变原列表 占内存
print(l)                                   # list.sort() 是在原列表上排序
l = ['   ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)
原文地址:https://www.cnblogs.com/gkx0731/p/9558340.html