day17

###########################zip函数#############################
zip(序列1,序列2)#拉链函数,将序列1,序列2中的元素一一对应成一个个元组。
test:
l1 = [1,2,3]
l2 = [3,2,1]#l1,l2不一定要同时为列表,只要是序列即可。(列表元组字符串)也可以是多层嵌套的。
test = zip(l1,l2)
print(list(test))
result:
[(1, 3), (2, 2), (3, 1)]

zip(p.keys(),p.values())#可以把字典中的key和value一一对应成一个个的小元组。
#需求:根据对values寻找max or min , 找到对应values的key
#用zip(p.values(),p.keys())来建立values于keys的一一对应关系。
#然后 res = zip(p.values(),p.keys())
    print(list(max(res)))即可。
demo:
dic = {'vth':18,'nwl':17,'ygm':20}
res_zip = zip(dic.values(),dic.keys())
res_max = max(res_zip)
print(list(res_max))
result:
[20, 'ygm']
max和min是从第一个开始比,比到能比出大小时就停止。
###########################zip函数end#############################


####################max函数高级用法##########################
list=[{x:xx},{xx:x},{xx:xx},{xxx:xx}]
#对于这样的一个列表,根本没法比较,因为max是基于for进行比较的,而字典是无序的,所以字典跟字典之间根本没有办法比较。但是。。set就可以比较了。不知道为啥。

max的高级用法:
l = [
    {'name':'vth','age':18},
    {'name':'ygm','age':20},
    {'name':'nwl','age':17}
]
res_max = max(l,key=lambda x:x['age'])#lambda在处理l序列,x是l序列的某个元素
print(res_max)
result:
{'name': 'ygm', 'age': 20}
####################max函数高级用法end##########################


################其他函数的用法###################
ord(字符)#与chr()功能相反。 返回字符的ascii码值。
pow(x,y)#用法同c语言
pow(x,y,z)#相当于pow(x,y)%z
round(float)#四舍五入
################其他函数的用法end###################


################slice()###################
slice(int,int,可选step)#模拟切片
    l = 'hello'
    s1 = slice(3,5)
    print(l[s1])的效果与print(l[3:5])的效果是一样的。
################slice() end###################



##################sorted()#######################
sorted()
    sorted() 函数对所有可迭代的对象进行排序操作。
    sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    ###############sorted的一般用法:
        l = [1,3,5,4,2,6]
    s = sorted(l)
    print(s)
    result:
    [1, 2, 3, 4, 5, 6]
    ##############sorted的高级用法:
    l = [
        {'name':'vth','age':18},
        {'name':'ygm','age':20},
        {'name':'nwl','age':17}
    ]
    res = sorted(l,key=lambda x:x['age'],reverse=True)#可以不写reverse, 不写时默认为False
    print(res)
    result:
    [{'name': 'ygm', 'age': 20}, {'name': 'vth', 'age': 18}, {'name': 'nwl', 'age': 17}]

    d = {
        'vth':18,
        'ygm':20,
        'nwl':17
    }
    res_1  = zip(d.values(),d.keys())
    print(sorted(res_1,reverse = True))
    result:
    [(20, 'ygm'), (18, 'vth'), (17, 'nwl')]
##################sorted() end#######################


####################剩余的内置函数的用法####################
str(obj)#将对象转换成字符串
sum(iterable)#求和
type(obj)#判断某对象的类型
    type的高级用法
    s = '123'
    if type(s) is str:
        k = int(s)+1
    print(k)
    result:
    124
var()#没有参数时等同于locals()
var(obj)#查看某对象所有的方法,显示成字典的形式。
####################剩余的内置函数的用法end####################



#####################初见模块#############################
模块就是一个py文件。
import test 相当于 C中的 #include<xxx>
test.func()
k = __import__(module_name)#module_name is a str
k.func()
import的原理就是通过操作系统调用__import__()来解决。
#####################初见模块end#############################



############################文件操作#####################
流程:
    打开文件,得到文件的句柄
    通过句柄操作
    关闭文件
示例:
    f = open('addr',encoding='utf-8')#python的默认编码是utf-8 而open()函数默认以系统默认编码打开,即gbk,所以此处要用encoding明确指出文件的编码格式为utf-8
    msg = f.read()#从当前文件指针处读到文件末尾。
    print(msg)
    f.close()
    result:
    不会R闪的瞎子
###### r w a
函数: f.readable()#返回True,则可读,返回False,则不可读。
     f.readline()#从文件指针处读一行(包括\n) 读完之后,文件指针在下一行开头
     f.readlines()#读取文件全部内容,以行为元素存储在列表中。
demo:
    f = open('addr',encoding='utf-8')#等于只读
    f = open('addr','r',encoding='utf-8')#只读
    f = open('addr','w',encoding='utf-8')#只写
w模式的话,如果没有文件存在,就创建,如果有文件存在,就覆盖。
demo:
f = open('aaddr','w',encoding='utf-8')
f.write('fuckyou')#注意,写文件的时候他不会自动加换行符。需要自己加,而且,参数只能是字符串
f.close()
result:
aaddr----> fuckyou

f.writelines(list)#参数为一个字符串列表
f.writerable()#判断是否可写
####a  追加操作 不存在则创建,存在则追加
demo:
res = open('addr','a',encoding='utf-8')
res.write('caonimaaaaaaaaaa')
res.close()
result:
fuckyoucaonimaaaaaaaaaa

#如果带'+'  比如 'r+'等,则代表可同时读写。
origin file text:草泥马
afer code:你妈马
code:
f = open('addr','r+',encoding='utf-8')
f.write('你妈')#会从文件指针处向后写,如果已经有字符则覆盖之,文件指针随之移动
res = f.read()
print(res)
#############文件没有修改一说,只有覆盖。
文件修改的本质:打开一个文件,将文件中的东西加载进内存,然后在内存中该巴改巴,然后将内存中的整个文件覆盖掉原来的文件。

#文件复制程序  by vth
f_ori = open('2.jpg','rb')
f_new = open('aaaa.jpg','wb')
msg = f_ori.read()
f_new.write(msg)
f_ori.close()
f_new.close()

with#让操作系统自动关闭文件
用法: 
    with open('a.txt','w',encoding='utf-8') as f:
        f.write('caonima')

    with open('a.txt','r',encoding='utf-8') as f,\#\用来截断代码
    open('aa.txt','w',encoding='utf-8') as f2:
rb wb ab等,以二进制方式处理。
注意,b模式操作的是字节类型,不能指定encoding
b模式对linux来说没有任何用处。因为linux处理文件默认就是二进制。
所以,用b模式处理有利于程序的跨平台。
############################文件操作end###################




猜你喜欢

转载自blog.csdn.net/weixin_41687289/article/details/80034319
今日推荐