Python学习笔记3

续2,元组、字典、集合,函数以及文件操作

元组tuple

用小括号()表示,逗号分隔元素,可以混合不同类型数据

元组的元素不可变,但可以包含可变对象,如list

可切片,可for遍历

1
2
3
4
5
6
t=(1) #括号会解析成表达式的一部分,数学运算的括号
print(type(t)) # int
t=(1,) #元组里只有一个数据时,为了让它知道里面不是一个普通的数值 加,表示元组
print(type(t)) # tuple
t=(1,"ss")
print(t)

增:不能在原有的基础上增加,只能通过+连接新建,相当于增加

1
2
3
4
tup1=(12,34,56)
tup2=("abc","xyz")
tup=tup1+tup2
print(tup) #输出(12, 34, 56, 'abc', 'xyz')

删:

1
2
3
tup1=(12,34,56)
print(tup1)
del tup1 #删除元组变量

改:元组元素不可变所以不可改

1
2
tup1=(12,34,56)
tup1[0]=100 #报错,不允许修改

查:

1
2
3
4
5
6
7
8
9
tup1=("abc","def",2020,2020)
print(tup1[0]) #下标访问
print(tup1[-1])
print(tup1[1:5]) #可以切片

tup=(1,2,3)
if 1 in tup:
print("exist")
print(tup.count(1))

字典dict

用花括号{}表示,存储键值对,查找速度快,键必须使用不可变类型,同一个字典键必须唯一

1
2
3
4
5
6
7
8
info={"name":"吴彦祖","age":18}
下标访问
print(info["name"])
print(info["age"])
访问了不存在的键
print(info["gender"]) #直接访问会报错
print(info.get("gender")) #使用get方法没有找到对应的键,默认返回None
print(info.get("age","False")) #没找到可以设定指定返回值

增删改查:

1
2
3
4
5
6
7
8
9
10
11
12
13
info={"name":"吴彦祖","age":18}

info["id"]=12

del info["name"] #删除键值对
del info #删除字典变量
info.clear() #清空字典变量

info["age"]=20

print(info.keys()) #得到所有的键(列表)
print(info.values()) #得到所有的值(列表)
print(info.items()) #得到所有的项(列表里嵌套元组)

遍历:

1
2
3
4
5
6
7
8
9
10
11
12
13
#遍历所有的键
for key in info: #或者for key in info.keys()
print(key)
#遍历所有的值
for value in info.values():
print(value)
#遍历所有键值对
for key,value in info.items():
print("key:{},value:{}".format(key,value))

mylist=["a","b","c","d"]
for i,x in enumerate(mylist): #枚举函数,使for循环也能操作列表下标
print(i,x)

集合set

集合和字典类似,用{}表示,没有重复元素
set是无序的,重复元素会被自动过滤。很有用的就是可用于数据去重
set相当于数学意义上的无序无重复元素的集合,可以做集合操作(交并差等)
增删改查等等。。这里视频没讲,应该不是很重要,以后遇到在查吧。

数据结构重点

重点掌握列表和字典,尤其是字典,用的最多。

函数

把使用率高的代码封装成函数,提高编程效率和实现代码重用,便于模块化开发

语法:

1
2
3
4
5
#定义:
def 函数名():
代码
#调用:
函数名()

python函数,参数、全局变量、局部变量、作用域和其他语言差不多

不同的是,python可以没有返回值,也可以返回多个值

1
2
3
4
5
6
7
8
9
10
11
12
def printinfo():
print("-----------------")
print("人生苦短 我用Python")
print("-----------------")
printinfo()
def divide(a,b):
shang=a//b #//取整除,向下取接近商的整数
yushu=a%b
return shang,yushu
sh,yu=divide(5,2)
print(sh)
print(yu)

global可以让全局变量在函数中使用

1
2
3
4
5
6
7
8
a=200 #函数外定义的为全局变量
def test1():
global a #声明全局变量在函数中的标识符
a=300 #函数内定义的为局部变量,默认局部变量优先。
print("test1--------修改前:a={}".format(a))
a=100
print("test1--------修改后:a={}".format(a))
test1()

文件操作

打开、关闭、读取、写入

打开文件语法:

1
open(name[,mode])

常用模式:
r以只读方式打开文件,没找到会报错 默认是r模式
w打开一个文件只用于写入,文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
rb 以二进制格式打开文件用于只读…
wb 以二进制格式打开文件只用于写入…

关闭文件:

如果用open打开文件一定要用close方法关闭文件,不然后面可能会有问题,用with open打开文件不用close,它会自动关闭,所以最好用with open

1
2
3
4
5
f=open("123.txt")
f.close()
#下面的写法不用关闭
with open("123.txt") as f:
代码

读取文件:

.read([size])方法,读取文件内容,size不指定则返回整个文件。有size则,开始时文件指针定位在头部,每执行一次文件指针移动size个位置,返回的是字符串

.readlines([size])方法返回size行的列表,未指定则返回全部行的列表

.readline()方法返回一行字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
with open("test.txt") as f:
content=f.read(5) #前5个字符串
content=f.read(5) #之后5个字符串

with open("test.txt") as f:
content=f.readlines() #.readlines([size])方法返回size行的列表,未指定则返回全部行的列表
i=1
for tem in content:
print("第{}行:{}".format(i,tem))
i+=1
print(content)

with open("test.txt") as f:
content=f.readline() #返回一行字符串
print(content)

写入文件:

write()方法,将字符串写入文件

1
2
with open("test.txt") as f:
f.write("hello world")

OS模块

OS模块有很多操作文件的函数,比如删除、重命名、创建文件夹、获取当前目录等等

等以后遇到了再看看

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2021 Blog of Tianze

请我喝杯咖啡吧~

支付宝
微信