___数据类型____

一、列表的复制

浅复制和深复制

  浅复制只复制一层,深复制完全克隆,慎用

1、实现浅复制的三种方式:

name=['song','xiao','nan']
import copy
name1=copy.copy(name)#相当于列表中中 name1=name.copy()
name2=name[:]
name3=list(name)

浅复制的适用场合

person=['name',['saving',100]]
p1=person[:]
p2=person[:]
p1[0]='songxiaonan'
p2[0]='ying'
print(p1)
print(p2)
p1[1][1]=1000
print(p1)
print(p2)#因为是浅复制,所以在更改p1【1】【1】的时候,p2【1】【1】也会跟着更改

   2、深复制

name5=copy.deepcopy(name)

二、元组

  元组是不可变的,已经设定不可再更改,只能进行查询操作,别名“制度列表”、

  元组只有两种内置操作:index和count

name=('song','xiao')
print(name.count('song'))
print(name.index('xiao'))

  适用场合:写的程序希望存储的数据不能被更改,比如程序中数据库的连接信息,一旦被更改就会影响连接数据库,可以用元组来存储该信息

三、字典

  字典是无序的,是通过key来查找信息,不需要下标

定义字典:info={

       'stu1101':'song',

       'stu1102':'xiao',

         'stu1103':'nan',
}

'stu1101','stu1102','stu1103'代表key,冒号后面的是相应值

  字典的增删改查
#查询   2种方式
info[stu1101]#这种方式,如果指定的key不存在就会报错
info.get('stu1101')#如果key不存在,返回None,建议使用这种查询方法
#修改
info[stu1101]='lallalallalal'#如果key不存在,就会想字典中插入该key以及该key的值
#删除 2种方法
del info['stu1101']
info.pop('stu1101') #判断某key是否存在
‘stu1101’ in info 返回值true false

   字典其他用法

#打印字典所有的key(第一层key)
print(info.keys())
#打印字典所有值
print(info.vaules())
#将字典转换为列表
info.items()
#合并两个字典update
catalog2={
"stu1101":'song111',
1:3,
2:4
}
catalog2.update(info)#重复key更新,不重复的key,合并
print(catalog2) #setdfualt:如果字典中存在指定的key,这种使用原数据,如果不存在key,则插入一条新数据
info.setdefualt('台湾',{'wwww.taiwan.com':[1,2]) #fromkeys:初始化一个新的字典
print(info.fromkeys([6,7,8]))#注意:3个key共享一个内存地址

  字典的循环

print(info)
for i in info:
print(i)# 以为字典是通过key来查询的,所以i代表的是key,打印出来的结果也只是key
for i in info:
print(i,info[i])#只打印值
for a,b in info.items():
print(a,b)#相比两种方法,上面的方法比价高效

____文件处理____

小知识点:

    shell的sed命令:逐行处理文件内容,并将结果输出到屏幕

         sed的替换命令:

sed  ‘s/abc/def/g’ file 把行内的所有abc替换成def,如果没有g,则只替换行内的第一个abc
sed  -n ‘s/abc/def/p’ file 只打印发生替换的那些行
sed  ‘s/abc/&def/’ file 在所有的abc后面添加def(&表示匹配的内容)
sed  -n ‘s/abc/def/gp’ file 把所有的abc替换成def,并打印发生替换的那些行
sed  ‘s#abc#def#g’ file 把所有的abc替换成def,跟在替换s后面的字符就是查找串和 
替换串之间的分割字符,本例中试#

  1、打开文件   (默认字符集为utf8)   

 f=open('file','r',encoding='utf-8')
#with 语句打开文件
with open('file','r',encoding='utf-8') as f,\
open('file2','w',encoding='utf-8') as f2:
............. #with 语句打开文件后,等with模块执行完毕,自动关闭文件,减少资源占用

  2、读取文件

f.read()#读取全部文件
f.readline()#逐行读取文件
f.readines()#读取全部文件,读取出来的文件为一个列表,每行是一个元素 #注意1:文件还能读取一遍,执行一次read()后,光标置在文件最后一行,不能回到首行,再次执行read()的时候,只能从文件最后位置往下读,所有第二次read(),返回结果为空 #注意2:read()读取方式是,将文件全部从硬盘写到内存后,再输出,如果文件比较大,则需要等一段时间才能看到但会的及结果,有一种边写边读的方法的:for line in f。。。。
for line in f:
print(line)
#这种方法读取文件的时候,读取一行删除一行,即内存中只存一行数据,适合大文件读取

  3、设置光标位置

f.tell() #打印目前光标所在位置    按字符计数
f.seek()#设置光标的返回位置 参数为0,将光标返回到文件开始位置
f.encoding#返回文件的字符编码
f.fileno()#返回文件句柄在内存中编号
f.readable()#判断文件是否可读
f.flush()#刷新文件
f.truncate()#截断文件,只有在文件在写属性的时候才可以使用,不加参数,默认清空文件

  4、写

b=open('file','w')
#w模式 创建一个新文件
# a模式 追加
b.write('sldksjfisdjisjoifd\n') #____________进度条________________
impory sys,time
for i in range(20):
sys.stdout.write('#')
sys.stdout.flush()
time.sleep(0.5)

  5、修改文件

#读写属性 r+   读并追加
file=open('file','r+',encoding='utf-8')
file.readline()
file.write('-----------------------------')
file.seek(0)
print(file.read())
#写读 w+ 先创建一个新文件 无卵用
#追加读 a+ #rb属性:以二进制模式读取文件 适用场合1 网络传输 2 打开视频文件
r=open('erjinzhiFile.py','rb')
#wb属性:写二进制文件
wb=open('erjinzhi','wb')
wb.write('songxiaonan song'.encode()) #写一个文件到一个新文件:一行一行的读取文件,边读边写,如果不是要修改的行,直接将该行写入到新文件,如果是要修改的行,修改完该行,再将该行写入到新文件中
#需要两个文件:源文件和新文件
#将文件中的‘12345678’换成‘000000000’
with open('file','f',encoding='utf-8') as f,\
open('filenew','w',encoding=‘utf-8’) as fnew:
for line in f:
if ‘12345678’ in line:
line=line.replace('','')
fnew.write(line
l

____集合____

  作用:去重和关系测试

   将列表转为集合后,就会自动去重

集合也是无序的

1、去重

name=[1,1,2,3,4,5,6,7,8,9,9,9,9,9,9]
name=set(name)

  2、关系测试

name1=[1,2,3,4,4,5,5,6,6,7,100]
name1=set(name1)
name2=set([2,3,4,9])
#交集
name1.intersection(name2)
#并集
name.union(name2)
#差集 name1有的 name2没有的
name1.difference(name2)
#判断是否是子集
name1.issubset(name2)
#判断是否是父集
name1.issuprset(name2)
#对称差集 交集取反
print(name1.symmetric_difference(name2))
#判断 是否没有交集 没有交集返回true 有交集返回False
print(name1.isdisjoint(name2))

运算符进行集合的关系测试

print(name1&name2)#交集
print(name1|name2)#并集
print(name1-name2)#差集
print(name1^name2)#对称差集

  3集合的方法

#增加
#集合中无插入,只有添加
name1.add(9999) #删除
name1.remove('song')#如果没有指定的字符串,报错
name1.discard('song')#如果没有指定的字符串,不报错 print(len(name1))#集合长度
1 in name1#1 是否咋 name1中

____字符编码和转码____

1、万国编码unicode,兼容gbk,utf-8等等,存一个英文和中文字符都占用2个字节16位,可以显示各个国家的语言

2、ASCII码,默认值占用一个字节8位,不能存储中文

3、为了解决浪费空间的问题,出现了另一个字符编码utf-8,是可变字符长,所有英文字符依然按照ASCII的总是存储,占用1个字节,中文字符占用3个字节

py3默认所有字符编码的unicode

要在py2使用中中文字符集,首先

#-*- coding:utf-8 -*-

name

name='绿萝植物'
name_to_unicode=name.decode('utf-8').encode('gbk')#decode 解码 encode编码

无论是在py2合适在py3,字符编码之间的转换都要先解码成unicode,再编码

python-数据类型补充及文件处理操作的更多相关文章

  1. PYTHON 100days学习笔记007-1:python数据类型补充(1)

    目录 day007:python数据类型补充(1) 1.数字Number 1.1 Python 数字类型转换 1.2 Python 数字运算 1.3 数学函数 1.4 随机数函数 1.5 三角函数 1 ...

  2. PYTHON 100days学习笔记007-2:python数据类型补充(2)

    目录 day007:python数据类型补充(2) 1.Python3 元组 1.1 访问元组 1.2 删除元组 1.3 元组运算符 1.4 元组索引,截取 1.5 元组内置函数 2.python3 ...

  3. python glob fnmatch 用于文件查找操作

    參考: http://python.jobbole.com/81552/:Python模块学习:glob文件路径查找 http://blog.csdn.net/suiyunonghen/article ...

  4. 《转》Python学习(15)-对文件的操作(二)

    转自 http://www.cnblogs.com/BeginMan/p/3169020.html 一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进 ...

  5. Python学习日记之文件读取操作

    Python内置了文件读写的函数open,read 用法示例: open('/home/root/files.txt ') 在打开文件后,操作完成后可以使用close()关闭文件,但比较好的文件读写方 ...

  6. 记录我的 python 学习历程-Day08 文件的操作

    文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...

  7. python数据类型(字符串、列表操作)

    一.整形和浮点型整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就是 ...

  8. 《转》Python学习(14)-对文件的操作(一)

    转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python ...

  9. Python之路 day2 文件基础操作

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa ''' #f,文件句柄;模式 a : append 追加文件内容 f = open( ...

随机推荐

  1. FIM2010同步用户

    在需要进行同步的来源MA进行同步 在需要进行导入的来源进行导入

  2. Android TextView走马灯效果

    布局: <TextView android:id="@+id/myTextView" android:layout_width="match_parent" ...

  3. Android自定义控件1--自定义控件介绍

    Android控件基本介绍 Android本身提供了很多控件比如我们常用的有文本控件TextView和EditText:按钮控件Button和ImageButton状态开关按钮ToggleButton ...

  4. 转载:设置html页面不让浏览器缓存的方法

    本文是转载文章,只是方便自己记录. 在html页面head标签之间添加以下标识可以避免大多数浏览器缓存: <meta http-equiv="Pragma" content= ...

  5. 别再TM跟我说找不到满意的工作!

    上一篇老徐跟大家分享:如何判断自己在这家公司是否有成长? 今天只想跟大家说几个真是案例:别再TM总抱怨说找不到满意的工作 说明:如下案例,针对老徐当前的软件测试职业,其他职业可自己脑补--- / 1 ...

  6. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  7. cocos2d-x 3.10 屏幕适配问题

    cocos2d-x 的屏幕适配问题困扰了我很久,差不多有一个星期吧.通过亲身实践才解决了问题,分享一下解决办法,供大家借鉴学习. 其实解决办法很简单,把下面代码注释掉就好了 // if (frameS ...

  8. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

  9. java汉化

    http://download.eclipse.org/technology/babel/babel_language_packs/R0.13.0/luna/luna.php _x86_64版本下载地 ...

  10. Server Tomcat v7.0 Server at localhost failed to start.临时解决办法

    错误名:Server Tomcat v7.0 Server at localhost failed to start. 解决办法:去掉下面这句话: (通常在代码开头部分,public class前) ...