集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

小数据池

#int

==比较数值

is 比较内存地址

id 测试内存地址

#str

不能含有特俗字符

单个元素*数字,不能超过21

i1 = ‘a’*20

i = ‘a’*20

id一样

i1 = ‘a’*21

i = ‘a’*21

id不一样

编码

ascii   英文的数字,字母,特殊字符

字节 8位表示一个字节

字符 内容的最小组成单位

abc  a一个字符

中国 中  一个字符

unicode :万国码

期初 两个字节,表示一个字符2**16不够用

升级 四个字节,表示一个字符2**32够了

utf-8 最少用8位,表示一个字符

a  用8位表示

欧洲 用16位表示

亚洲 用24位表示 3字节

gbk 国标

包含英文和中文

中文用个字节表示

1.不同编码之间的二进制不能互相识别

2.对于文件的存储,及传输不能是unicode编码

python3x

int

bool

bytes:内部编码方式(非unicode,可能是utf-8,国标,根本2312.。。。)

str:内部编码方式为unicode。不能用户发送及存储

list

dict

tuple

str和bytes的区别

字母

str:表现形式:alex

内部编码:unicode

bytes:表现形式:s2 = b‘alex‘

内部编码:非unicode

中文

str:表现形式:’中国‘

内部编码:unicode

bytes:表现形式:s2 = b‘\xe4\xb8\xad\xe5‘

内部编码:非unicode

编码

所有编码到uniconde都是decode

反之都是encode

集合

1.集合 要求它里面的数据元素,可哈希的,元素不重复,无序

本身是不可哈希的

set1 = {}

1.关系测试

2.去重

l1 = [1,1,2,2,3,4,5]

print(list(set(s1)

)

set1 = {‘alex‘,‘wusir‘,‘egon‘,}

set1.add(‘文州‘)

set.update(‘abc‘) PS:迭代增加

删:

set1.pop() 随机删除

set.remove(‘alex‘) 按照元素删除

set1.clear 清空集合

del set1 删除整个集合

查:

for i in set1:

print(1)

关系测试:

set1 = {1234}

set2 = {2345}

交集

print(set & set2 )

print(set.intersection(set2))

并集

print(set1 | set2)

print(set1.union(set2))

差集 (求set里独有的元素)

print(set1 - set2)

print(set1 difference set2)

反交集 (不是交集,为反交集)

print(set1 ^ set2)

print(set1.symmetric_difference(set2))

父子集 (包含为超级,小为子集)

set1 = {1,2,3}

set2 = {1,2,3,4,5,6}

print(set1 > set2)

True

print(set1.isubset(set2))

冻集

set1 = {1,2,3}

print(frozenset(set1))

深浅拷贝

浅copy 第一层,各自独立。从第二层开始,公用一个内存地址

s1 = [1,2,3]

s2 = s1.copy[]

s1.append(666)

print(s1,s2)

s1 = [1,2,3[11,22]]

s2 = s1.copy[]

s1[-1].append(666)

print(s1,s2)

深copy 深copy无论多少次,都是互相独立的。互不影响

import copy

s1 = [1,2,3[11,22]]

s2 = s1.deepcopy[s1]

s1.append(666)

print(s1,s2)

文件操作

f1 = open(‘d:\xx.txt‘,encoding=‘utf-8‘,mode=‘r‘)

print(f1.read())

f1 文件句柄

open()调用的内置函数,内置函数调用的系统内部的open

一切对文件进行的操作都是基于文件句柄f1

执行流程:打开文件-->产生文件句柄-->对文件句柄进行操作-->关闭文件句柄

报错原因:

编码问题

File "D:/pycharm/day3/a.py", line 5, in <module>

print(f1.read())

File "D:\python\lib\codecs.py", line 322, in decode

(result, consumed) = self._buffer_decode(data, self.errors, final)

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc4 in position 39: invalid continuation byte

编码不一致

路径错误

SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \UXXXXXXXX escape

解决方法

在 路径最前面加个r

读:

r

1、read()全读出来

2、read(n)读一部分。n为读取指定多少字符

3、readline()按行读取

4、readlines()读取多行,放在列表里

5、for循环读取

for x in f1:

print(x)

f1.close()

rb

f1 = open(‘1.jpg‘,mode=‘rb‘)

print(f1.read)

f1.close

rb的raad(n)n为字节

r+

r+读写模式

r+b

(涉及到b的,是bytes类型。都是非文字类型的文件,如电影,音乐)

写:

f1 = open(‘log2‘,encoding=‘utf-8‘,mode=‘w‘)

w

没有文件,创建文件也要写入。

有源文件,先清空内容,后写入内容

wb

w+ 写读模式,替换的是字节

f1.seek(0) #调整光标到最前面

(0,2) #调整到末尾

w+b

追加:

a   没有文件,创建文件写入

有源文件,后面追加

f1 = open(‘账号密码‘,encoding=‘utf-8‘,‘mode=‘a‘)

f1.write(‘太白‘)

f1.close

ab

a+

a+b

其他操作方法

readable 是否可读

writable 是否可写

tell 告诉光标具体在哪

seek 调整光标的位置

(0,2)调整到末尾

truncate

只能在a或者在a+模式下使用的truncate

按照字节对源文件截取

with open(‘d:\xx.txt‘,encodint=‘utf-8‘,mode=‘r‘)as f1,:

print(f1.read)

在一定的时间内,自动关闭

能用一条语句,操作多个open

文件的改

1.以读模式打开源文件

2.以写的模式打开一个新文件

3.将源文件内容读出,按照要求修改,将修改后的内容,写入新文件

4.删除源文件

5.将新文件重命名源文件

函数

初识函数

def 函数名():

函数体

函数执行:函数名()

函数以功能为导向

函数名()

return

1.终止函数

2.给函数的执行者返回值

return 或者 return none

多个值,返回元组

3.

函数的传参

1.形参角度

1.位置参数 与实参的位置参数一一对应

2.默认参数 默认参数要在位置参数后面,括号里面加入参数为默认参数

3.动态参数 传入的参数不固定,用动态参数

*args  接受所有的位置参数,放在元组中

**kwargs 接受所有的关键字参数,放在字典里

#函数定义的时候,*代表聚合

#函数执行的时候,*代表打散,放到一起

字典用两颗星**

形参先后顺序:位置参数-->*args-->默认参数-->**kwargs

2。实参角度

1.位置参数 按顺序一一对应

2.关键字传参 参数一一对应

3.混合传参(位置参数,关键字参数)

关键字参数必须在位置参数后面

条件简单,切结果简单。可以用三元运算

原文地址:https://www.cnblogs.com/dunkeng/p/9084999.html

时间: 05-23

集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)的相关文章

深浅拷贝&amp;文件操作

一.深浅拷贝 浅拷贝:拷贝第一层(顶级对象),或者说:父级对象 深拷贝:拷贝所有对象,顶级对象及其嵌套对象,或者说父级对象及其子对象 # 应该每次都拷贝一份(但由于小数据池,未拷贝) v1 = 'alex' import copy v2 = copy.copy(v1) print(id(v1),id(v2)) #同一地址 练习1 impot copy v1 = [1,2,3] v2 = copy.copy(v1) #浅拷贝 print(v1 == v2) # True print(v1 is v

asp.net 文件操作小例子(创建文件夹,读,写,删)

静态生成要在虚拟目录下创建文件夹 来保存生成的页面 那么就要对文件进行操作 一.创建文件夹 using System.IO; string name = "aa"; string path = Server.MapPath("") + "\\" + name; if (Directory.Exists(path)) { Response.Write("<script>alert('文件夹已存在了!');history.go(

Python 文件(读\写)操作

文件(读\写)操作 open()函数,用来打开文件,创建file对象.open(name[,mode[,buffering]])name:要打开的文件mode:是打开文件的模式(读.写.追加)buffering:是否要寄存,默认为0或者False(不寄存),1或True表示寄存(意味着使用内存来代替硬盘,让程序更快,只有使用flush或者close才会更新硬盘上的数据),如果大于1表示寄存区的缓冲大小(单位:字节),如果是负值,表示寄存区为系统默认大小. open函数中模式参数的常用量:r 读模

30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集

一:泛型    关于泛型我自己也不是很好的理解,但是具体的运用还是可以的,可以这样的理解,我们定义一个数组,但是不知道将来它是保存什么类型的值,很是矛盾,这个时候泛型就出现了,它可以解决这个场景,list<T> 以前这里是类型,前提是我们知道这里将来保存什么值,现在不知道了使用T(Type)来表示,将来什么类型的值都可以保存在里面.这个在集合,项目底层一些公共的接口,类之中使用的特别多. 二:集合 线型集合----List<T> List<int> array = ne

小数据池 集合 深浅拷贝

小数据池 集合 深浅拷贝 一.小数据池 定义:小数据池是Python中一种提高效率的方式,固定数据类型使用同一个内存地址,支持数据类型:str,int,bool是一种缓存机制,特被称为驻留机制,各大编程语言中都有类似的东西. id() ----- 查看元素的内存地址 is 与 == 的区别 is 判断两个元素的内存地址是否相等 == 判断等号左右两边的元素的值是否相等 小数据池的规则 数字:-5~256 字符串: 字符串在做乘法(乘数不为1)的时候总长度不能超过20 自己定义的字符串的长度不受限

python第三天学习复习,集合set,文件操作,函数(普通函数,递归,高阶函数),字符编码和解码

三元运算 age = 23 #就是if else的简单写法 a = age if age < 20 else 25 集合 set #集合是无序切不重复的, #当对列表去重复的时候,可以直接使用 set(list),就将list转为set,并去除中间重复的 list = [1,2,3,4,5,5,6,7,8,9,1] s = set(list) 运行结果:可以发现将 list中重复的去掉,并且类型变成set,再使用list(set),转为list 集合操作 # Author:zylong set1

Python基础(集合用法、文件操作、字符编码转换、函数)

集合(Set)及其函数 集合是一个无序的.无重复元素的序列. 1 list = {1, 3, 6, 5, 7, 9, 11, 3, 7} # 定义集合方式一 2 list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) # 定义集合方式二 3 list2 = set() # 定义一个空集合 4 5 print(list1, list) # 打印后可看到,集合中的元素已自动去重 6 print(3 in list) # 判断一个元素是否在集合中,返回bool值 7 pri

文件操作一写操作

写模式 覆盖写 在写文件的时候我们要养成一个写完文件就刷新的习惯. 刷新flush() f = open('../path1/小娃娃.txt',mode='w',encoding='utf-8') f.write('太白很白') f.flush() f.close() 结果: 当我选择使用w模式的时候,在打开文件的时候就就会把文件中的所有内容都清空,然后在操作 注意点:如果文件不存在使用w模式会创建文件,文件存在w模式是覆盖写,在打开文件时会把文件中所有的内容清空. f1 = open('../

join方法,set集合,深浅拷贝.

上节课回顾1. python里的(int,str)存在一个小数据池主要是为了节约内存. int: -5~256 str: is和 == 的区别:is比较的是内存地址,==比较的两边的值. id(地址).2.编码 1.ASCII, 英文, 数字, 一些特殊符号 8bit 1byte 2. GBK, 国标码, 汉字. 16bit 2byte 必须兼容ASCII 3. UNICODE, 万国码, 32bit 4byte , 兼容ASCII 4. UTF-8 可变长度的万国码 英文: 8bit 1byt

set集合 ,深浅拷贝

一 之前内容的补充 1.join() 将列表转换成字符串       2.split()将字符串转换成列表 3列表和字典在进行For循环时是不可以删除的(准确的说是删除的不彻底)  删除操作需要先创建一个新的空列表,把老列表里的元素循环 然后给到新的列表,然后再循环新的列表,删除旧的列表.列表的删除用的是remove,字典用的是pop. 4 fromkeys 返回的是新的字典,对原字典没有影响,而且后面的Value的值会被前面的key值共享 二 set集合 概念:set集合是不重复的 无序的 元