17python学习 zip方法 max min 其他内置函数,文件操作

文件处理

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

print(all([1,2,'1']))
print(all([1,2,'1','']))
print(all(''))

print(any([0,'']))
print(any([0,'',1]))


print(bin(3))

空,None,0的布尔值为False,其余都为True
print(bool(''))
print(bool(None))
print(bool(0))

name='你好'
print(bytes(name,encoding='utf-8'))
print(bytes(name,encoding='utf-8').decode('utf-8'))

print(bytes(name,encoding='gbk'))
print(bytes(name,encoding='gbk').decode('gbk'))

print(bytes(name,encoding='ascii'))#ascii不能编码中文

print(chr(46))

print(dir(dict))

print(divmod(10,3))

dic={'name':'alex'}
dic_str=str(dic)
print(dic_str)

可hash的数据类型即不可变数据类型,不可hash的数据类型即可变数据类型
print(hash('12sdfdsaf3123123sdfasdfasdfasdfasdfasdfasdfasdfasfasfdasdf'))
print(hash('12sdfdsaf31231asdfasdfsadfsadfasdfasdf23'))

name='alex'
print(hash(name))
print(hash(name))


print('--->before',hash(name))
name='sb'
print('=-=>after',hash(name))


print(help(all))

print(bin(10))#10进制->2进制
print(hex(12))#10进制->16进制
print(oct(12))#10进制->8进制



print(isinstance(1,int))
print(isinstance('abc',str))
print(isinstance([],list))
print(isinstance({},dict))
print(isinstance({1,2},set))

name='哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈粥少陈'
print(globals())
print(__file__)

def test():
    age='1111111111111111111111111111111111111111111111111111111111111'
    # print(globals())
    print(locals())

test()

l=[1,3,100,-1,2]
print(max(l))
print(min(l))


print(list(zip(('a','n','c'),(1,2,3))))
print(list(zip(('a','n','c'),(1,2,3,4))))
print(list(zip(('a','n','c','d'),(1,2,3))))

p={'name':'alex','age':18,'gender':'none'}
print(list(zip(p.keys(),p.values())))
# print(list(p.keys()))
# print(list(p.values()))

print(list(zip(['a','b'],'12345')))


l=[1,3,100,-1,2]
print(max(l))
print(min(l))


age_dic={'alex_age':18,'wupei_age':20,'zsc_age':100,'lhf_age':30}

print(max(age_dic.values()))

默认比较的是字典的key
print(max(age_dic))

for item in zip(age_dic.values(),age_dic.keys()): #[(18,'alex_age')  (20,'wupeiqi_age') () () ()]
    print(item)

print('=======>',list(max(zip(age_dic.values(),age_dic.keys()))))

l=[
    (5,'e'),
    (1,'b'),
    (3,'a'),
    (4,'d'),
]
l1=['a10','b12','c10',100] #不同类型之间不能进行比较
l1=['a10','a2','a10'] #不同类型之间不能进行比较
print(list(max(l)))
print('--->',list(max(l1)))

print(zip(('a','b','c'),(1,2,3)))
print(list(zip(('a','b','c'),(1,2,3),('c','e',3))))  #设定列表内一一对应的关系组成元祖,不是一一对应的少的都不要了
print(list(zip(('a','b','c''d'),(1,2,3))))
输出结果
<zip object at 0x00000000028FBFC8>
[('a', 1, 'c'), ('b', 2, 'e'), ('c', 3, 3)]
[('a', 1), ('b', 2), ('cd', 3)]               #*******这里完全不一样啊cd一起了呀,和说好的不一样啊

p={'name':'alex','age':18,'gender':'none'}   #出现顺序可能不一样,但是一一对应的
print(list(zip(p.keys(),p.values())))

zip方法只要是序列都可以,列表,字符串,元祖

print(list(zip('abcc','1234')))        # 输出[('a', '1'), ('b', '2'), ('c', '3'), ('c', '4')]


age_dic={'age1':18,'age3':20,'age4':32,'age2':45}
print(max(age_dic.values()))    # value比较
print(max(age_dic))        #默认为key,所以比较key,一位一位来以ascii码表来比
输出
45
age4
max的高级用法
l=[
    (5,'e'),
    (1,'b'),
    (3,'c'),
    (6,'a'),
]
l1=['a10','b33','c1']  #不同类型之间不能比较
print(max(l))         #     (6, 'a')   直接是比较第一个元素位置值大小关系
print(list(max(l)))
print('---->',max(l1))    #比较 位置元素依次进行比较
1:max函数处理的是可迭代对象,相当于一个for循环取出每个元素进行比较,注意,不同类型无法比较
2:每个元素间比较是从每个元素第一个位置依次比较,

l=[1,3,100,-1,2]
print(max(l))
dic={'age1':18,'age2':10}
print(max(dic)) #比较的是key
print(max(dic.values())) #比较的是key,但是不知道是那个key对应的

print(list(max(zip(dic.values(),dic.keys()))))    #      [18, 'age1']    结合zip使用

终级用法
people=[
    {'name':'alex','age':1000},
    {'name':'wupei','age':10000},
    {'name':'yuanhao','age':9000},
    {'name':'linhaifeng','age':18},
]
字典无法直接比较,只有数字,字符串,集合能比较
max(people,key=lambda dic:dic['age'])
等效于
ret=[]
for item in people:
    ret.append(item['age'])
print(ret)
max(ret)
print('取出来没有',max(people,key=lambda dic:dic['age']))


其他的内置函数
print(chr(97))
print(ord('a'))  #显示ascii表中显示的对应数字

print(pow(3,3))  #3**3
print(pow(3,3,2))  #3**3%2



l=[1,2,3,4]
print(list(reversed(l)))     #翻转
print(l)


print(round(3.5))  #四舍五入

print(set('hello')) #变成集合的形式  {'l', 'h', 'e', 'o'}

l='hello'
s1=slice(3,5)  #切分
s2=slice(1,4,2)   #可以指定步长
# print(l[3:5])  #取3到5  可读性差
print(l[s1])
print(l[s2])
print(s2.start)   #开始序号
print(s2.stop)
print(s2.step)  #内容多少



l=[3,2,1,5,7]
l1=[3,2,'a',1,5,7]
print(sorted(l))   #从小到大排序
# print(sorted(l1)) #排序本质就是在比较大小,不同类型之间不可以比较大小
people=[
    {'name':'alex','age':1000},
    {'name':'wupei','age':10000},
    {'name':'yuanhao','age':9000},
    {'name':'linhaifeng','age':18},
]
print(sorted(people,key=lambda dic:dic['age']))       #其实和比较大小是一个类型

name_dic={
    'abyuanhao': 11900,
    'alex':1200,
    'wupei':300,
}
print(sorted(name_dic))  #按照key排序了  ['abyuanhao', 'alex', 'wupei']

print(sorted(name_dic,key=lambda key:name_dic[key]))  #按照value排序,显示key    #name_dic.keys()是value?
 ['wupei', 'alex', 'abyuanhao']

print(sorted(zip(name_dic.values(),name_dic.keys()))) #与zip结合[(300, 'wupei'), (1200, 'alex'), (11900, 'abyuanhao')]

print(str('1'))
print(type(str({'a':1})))
dic_str=str({'a':1})      #这个是字符串形式
print(type(eval(dic_str)))    #

l=[1,2,3,4]
print(sum(l))   #求和
print(sum(range(5)))


print(type(1))    #查看数据类型

msg='123'

if type(msg) is str:
    msg=int(msg)
    res=msg+1
    print(res)

def test():
    msg='撒旦法阿萨德防撒旦浪费艾丝凡阿斯蒂芬'
    print(locals())       #局部
    print(vars())      # {'msg': '撒旦法阿萨德防撒旦浪费艾丝凡阿斯蒂芬'}
test()
print(vars(int))


文件引用
import-调用-->sys系统----->__import__()
import test
test.say_hi()

import 'test'  #报错import不能导入字符串,_import_可以导入字符串 ,但是要用下面方式导入
module_name='test'
m=__import__(module_name)
m.say_hi()

文件处理

http://www.cnblogs.com/linhaifeng/articles/5984922.html#_label1

f=open('陈粒',encoding='utf-8')  #指定这个文件用utf8打开 默认是GBK
data=f.read()      #读文件内容,在硬盘上,需要加载到内存中,
                    # open是内存中的一个程序,想要从硬盘中找到文件,
                    # 但是应用程序要向操作系统要文件句柄并且赋值f
print(data)
f.close()            #句柄回收,关闭文件

f=open('xxx')  #存用gbk,打开也用gbk
data=f.read()
print(data)

#r w a     只读,只写,只追加模式
f=open('陈粒','r',encoding='utf-8')    #只读模式
# data=f.read()        #出现这个意味着文件全读完了,
                    # 标记到f.close那里了 导致f.readline() 读不出来了 ,要注释掉
# print(data)
print(f.readable())         #判断是否可读
print('第1行',f.readline(),end='')    #end=''去掉换行
print('第2行',f.readline())         # 一次读一行
print('第3行',f.readline())
print('第4行',f.readline())


data=f.readlines()
print(data) 
 # 输出 ['2222222\n', '3333333333\n', '4444444\n', '55555555\n', '66666\n', '7777777\n', '888888']
f.close()        #这个一定要写上

文件处理写操作

f=open('陈粒1','w',encoding='utf8')  #写模式  ,
# f.read() #报错,不可读
f.write('11111111\n')     #文件不存在会新建一个文件,文件存在,则会清空后再操作
f.write('222222222\n')    #换行要自己写\n
f.write('333\n4444\n555\n')
# f.writable()
f.writelines(['555\n','6666\n'])   #传列表形式
f.writelines(['555\n','6666\n',1]) # 文件内容只能是字符串,
                                 # 只能写字符串 读模式读出来的也只是字符串
f.close()

文件处理追加模式

f=open('陈粒1','a',encoding='utf-8')
f.write('写到文件最后')

文件处理其他模式

# 文件没有修改,都是覆盖  都是从硬盘中取文件然后在内存中更改,然后再将修改后的覆盖到硬盘中
f=open('xxx','r+',encoding='gbk')  #'r+' 可读可写
# data=f.read()
# # print(data)
f.write('123sb')     #光标在哪就从哪里开始覆盖内容


f.write('sb')   #如果没点光标位置,则在第一行开始覆盖


#文件修改
src_f=open('xxx','r',encoding='gbk')  #注意查看时候软件编码要和encoding设置的一致才能正确显示
data=src_f.readlines()
src_f.close()

print(data)    # ['sb海峰\n', '123456']
dst_f=open('xxx','w',encoding='gbk')  #编码可以不同
# dst_f.writelines(data)
dst_f.write(data[0])
dst_f.close()

with open('a.txt','w') as f:  #获取句柄f  并且可以不用写close
    f.write('1111\n')


src_f=open('xxx','r',encoding='gbk')
dst_f=open('xxx','w',encoding='gbk')
with open('xxx','r',encoding='gbk') as src_f,\        #太长了可以\换行
        open('xxx_new','w',encoding='gbk') as dst_f:   #记得获取句柄
    data=src_f.read()  #读然后写
    dst_f.write(data)

f=open('a.txt')
print(f.encoding) #查看文件编码

 

猜你喜欢

转载自blog.csdn.net/yunyupianlan/article/details/80994687