为什么python会火,是因为云计算和大数据是用python写的
————————————————————————————
zip()
类似拉链一样,将两个数据一一对应起来,例如:
1. zip( ('a', 'n', 'c' ), (1, 2, 3 ) ) ('a', 'n', 'c' )和(1, 2, 3 )是有序列的,因为是元组
RESULT: [ ('a', 1), ('n', 2), ('c', 3) ]
2. P = {'name':'wwe', 'age':18, 'gender':'none'}
print ( list (zip (P.keys(), P.values() ) ) )
RESULT: [ ('gender','none'), ('name','wwe'), ('age',18) ) ------因为字典是无序的,集合也是无序的。有序的:列表,元组,字符串
zip注意事项:
zip如果不是一一对应的,就不要。
例如:4和5不要了,
print(list(zip(('a', 'n', 'c'), (1, 2, 3, 4, 5)))) 结果: [('a', 1), ('n', 2), ('c', 3)]
字符串也是序列类型,可以用zip
例如:
print(list(zip(('hello'), ('12345')))) 结果: [('h', '1'), ('e', '2'), ('l', '3'), ('l', '4'), ('o', '5')]
max()传入可迭代对象(参数)
min()
max例子:
age_dic ={'age1':18, 'age4':20, 'age3':100, 'age2':30} print(max(age_dic.values())) #这样是取age_dic的values值做比较 print(max(age_dic)) #这样是取age_dic的keys值做比较-------通过for循环将每一个字符做比较,比较大小的规则是ascil表的相对应的位置 结果 1:100 2:age4
如果比较的是“age1‘更换成’age12345‘,然后和’age4‘比较。
结果是’age4‘比较大,是因为在age后面4比1大,所以age1 2345-----不用再考虑已经比较出大小了
每个元素间进行比较,是从每个元素的第一个位置依次比较,如果这一个位置分出大小,后面的都不需要比较,直接得出这两个元素的大小
字符串不能和数字进行比较,不同类型之间不能进行比较,字符串是根据字符所在位置对应的编号大小进行比较,数字是通过大小进行比较。
ord()
print(ord(’a'))
结果:97 -------------打印的是字符在ascii编码位置,和chr刚好相反。
pow()
pow(3,3)-------3的3次方
结果是:27
pow(3,3,2) -------------3^3/2 取余数
结果是:1
round()------四舍五入
set()集合
可以切片和指定步长
sorted()
排序:排序的本质是在比较大小,不同类型之间是不可以比较大小
str() 转成字符串
type() 查看数据类型
msg = '123' if type (msg) is str: msg = int(msg) res = msg +1 print(res) 结果: 124
sum()求和:
l = [1, 2, 3, 4, 5] p = sum(l) print(p) #sum第一种用法 print(sum(range(6))) #sun第二种用法 #为什么是range(6),是因为range取值[0, 6),取不到6
import
import 导入模块 (就是py文件,可以是自己写的和python系统的), -----注意不能导入字符串
工作原理:先import, 然后sys系统,最后是__import__()
m = __import__() ------可以导入字符串类型
文件处理
打开文件 f = open (‘陈粒’)--------有误(编码错误)
分析:其中f = open (‘陈粒’)是文件句柄,open是使用用操作系统的编码,window是gbk,但是pychrm是utf-8。 陈粒是文件路径(在同个目录下,可以使用相对路径)
更正:f = open (‘陈粒’, encoding = ‘utf-8’)
文件处理流程:
1.打开文件,得到文件句柄并赋值给一个变量
2.通过句柄对文件进行操作
3.关闭文件
文件打开模式:
r, w, a (只能读或者写或者追加)
读 写 追加
r模式
f = open(‘陈粒’,‘r', encoding=’utf-8')
print(f.readable()) --------是否可以读,返回布尔值
print(f.readline()) -------一次读一行,没有值不会报错
取消换行:print(f.readline(),end=' ')
和readline(),的括号里加不了参数
data = f.readlines()
print(data)
结果为;['111111 ', '2222222 ', '333333']
文件处理写模式
f = open(‘陈粒’,‘w', encoding=’utf-8‘)
注意:在’w‘模式下,如果文件存在,就会将文件清空掉,再进行下列操作(就是新建相同文件名的文件覆盖掉原先的文件)
如果文件不存在,就会新建一个新的文件
f.write('1111111111')
f.write('222222222')
结果:11111111222222222 如果要写成两行就要在后面加上换行符
f.write('1111111 ')
f.writeable() 判断是否可写,返回是布尔值
f.writelines(['55555 ','66666666 ']) 以列表的形式写入
f.write(3)---------会报错,是因为3是int(数字类型),而文件内容都是字符串,文件内容只能是字符串,所以只能写字符串。
文件处理追加操作(类似日志)
f = open('陈粒’,'a', encoding='utf-8')
f.write('写到最后’)
文件处理其他模式
f = open(‘xxx’, ‘r+’,encoding=‘utf-8’)
data= f.read
f.write('12345sb') 写到前面,追加到前面
文件没有修改这一说,数据的本子都是覆盖
写的位置就是光标位置
src_f = open('xxx.py', 'r+', encoding='utf-8') # data = src_f.readlines() #读的是将文件读成list类型(全部内容) data1 = src_f.read() print(data1) #这是将所有内容读出来 # print(data) src_f.close() 文件内容显示: 'sdsdfasffasdfas' '21312312321321' 'sdfsafasdf' 'sdfasfsadfdsa' 'sdfasfdsafdsaf' 'adfasfdsd'
dst_f = open('xxx_new', 'w', encoding='utf-8') # dst_f.write(data) dst_f.write(data[0]) dst_f.close()
忘记上面的代码的教学目的是什么了,但是知道是将文件‘xxx’.py的第一行写到第二个文件‘xxx_new'的里的第一行
文件修改
with open(’a.txt',‘w')as f:
f。write(’111 )
with
with open('xxx','r',encoding='gbk') as src_f,
open('xxx_new','w',encoding='gbk') as drc_f:
如果一行代码写的太长,要用(斜杠+回车)进行换行
data = src_f.read() 从原文件中读到数据,然后原封不动的写到
dst_f.write(data) 新的文件中