列表(list)
- 添加元素("增"append, extend, insert)
- 查找元素("查"in, not in, index, count)
- 删除元素("删"del, pop, remove)
- 排序(sort, reverse)
字典(dict)
- 查看元素:根据键访问值,或用get
- dict.get('age')无则返回none
- dict.get('age',18)无则返回18
- del删除元素,dict.clean()清空字典
- len,key,values,items [返回一个包含所有(键,值)元祖的列表]
遍历:
- enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
函数中修改函数外的全局变量:
- 函数中使用global,当函数内出现和全局变量名相同对象的定义和赋值操作,理解为对全局变量进行修改,而不是修改局部变量。
函数参数类型:
- 缺省参数:缺省参数的值如果没有传入,则取默认值。
- 不定长参数:*args将几个存为元祖,**kwargs存为字典
def fun(a, b, *args, **kwargs):
...
fun(a=1,b=2,3,4,5,c=3,d=7)
#运行结果
a=1,b=2
args=(3,4,5)
kwargs={'c':3,'d':7}
引用:
- 在python中,值是靠引用来传递来的,如a=[1,2,3],b=a,则id(a)==id(b)是True,且a.append(4),后b也为[1,2,3,4]
数据类型:
- 可变类型有: 列表、字典、集合
- 不可变类型有: 数字、字符串、元组
Python中函数参数是引用传递(注意不是值传递)
- 对于不可变类型,因变量不能修改,所以运算不会影响到变量自身
- 而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量
递归函数:
# 求n!
# n!=n*(n-1)! (n>1)
# 1!=1 (n=1)
def digui(n=1):
if n>1:
s=n*digui(n-1)
return s
else:
return 1
lambda创建小型匿名函数
- 只能返回一个表达式的值,所以匿名函数里不能直接调用print
- 应用:作为参数传入函数
# 按字典的age键对应的值排序
stus = [
{"name": "zhangsan", "age": 18},
{"name": "lisi", "age": 19},
{"name": "wangwu", "age": 17}
]
k=lambda x: x['age']
stus.sort(key= k)
#stus.sort(key= lambda x: x['age'])
#自定义函数
def sss(a,b,function):
s=function(a,b)
print(s)
return s
sss(1,2,lambda x,y:x+y)
列表推导式:轻量级循环创建列表,多个 for 和 if 的组合
a=[(x,y,z) for x in range(4) for y in range(4) for z in range(2,10,4) if x%2==0 if y%2!=0]
type(a) # list
for i in a:
print(i,end=' ')
#(0, 1, 2) (0, 1, 6) (0, 3, 2) (0, 3, 6) (2, 1, 2) (2, 1, 6) (2, 3, 2) (2, 3, 6)
a=[[x,y] for x in range(4) for y in range(4) if x%2==0 if y%2!=0]
# [[0, 1], [0, 3], [2, 1], [2, 3]]
a=[{'X':x,'Y':y} for x in range(4) for y in range(4) if x%2==0 if y%2!=0]
# [{'X': 0, 'Y': 1}, {'X': 0, 'Y': 3}, {'X': 2, 'Y': 1}, {'X': 2, 'Y': 3}]
集类型:set,使用set,可以快速的完成对list中的元素去重复的功能,set、list、tuple之间可以相互转换
文件的打开与关闭:open(文件名,访问模式),close()
# 新建一个文件,文件名为:test.txt
f = open('test.txt', 'w')
# 关闭这个文件
f.close()
'''
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。if该文件已存在,文件指针将会放在文件的结尾,新的内容写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。其他同上的 r
wb 以二进制格式打开一个文件只用于写入。其他同上的 w
ab 以二进制格式打开一个文件用于追加。其他同上的 a
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。
如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不
存在,创建新文件用于读写。
'''
读数据:
- read(num):可以从文件中读取数据,num表示要从文件中读取的数据的长度
- read():一次性读取文件中所有的数据
- readline():一次读文件中一行数据
- readlines():一次性读整个文件中的内容进行读取,并返回一个列表,其中每一行数据为一个元素