集合set
# -*- coding:utf-8 -*-
# Author:Jone
#集合 无序不可重复
list1 = [2,1,4,6,4,5]
list1 = set(list1)
print(list1)
#定义set的两种方式
#list2=set([2,2,5,6])
list2 = {2,2,5,6,7}
print(list2)
#取交集
print(list1.intersection(list2))
print(list1 & list2)
print("&")
#取并集
print(list1.union(list2))
print(list1 | list2)
print("|")
#求差集
print(list1.difference(list2))
print(list1 - list2)
print(list2.difference(list1))
print(list2 - list1)
print("-")
#判断是不是子集
print(list1.issubset(list2))
#是不是父集
print(list1.issuperset(list2))
#对称差集 取互相没有的
print(list1.symmetric_difference(list2))
print(list1 ^ list2)
print("^")
#没有交集返回true
print(list1.isdisjoint(list2))
list3 = {2,4,6}
list4 = {1,5,7}
print(list3.isdisjoint(list4))
#添加
list3.add(111)
list3.update([1,2,7])
print(list3)
#删除
list3.remove(111)
print(list3)
#随机删 ??
print(list3.pop())
print(list3.discard(123))
#存在即删除
list3.discard(7)
#判断是否存在
print( 2 in list3)
print( 2 not in list3)
print("===========pop===============")
list3 = [234,2341,234123,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
list3 = set(list3)
print(list3)
list3.pop()
print(list3)
list3.pop()
print(list3)
list3.pop()
print(list3)
list3.pop()
print(list3)
文件操作
# -*- coding:utf-8 -*-
# Author:Jone
'''
r 模式 读
w 模式 打开文件会创建一个文件 所以相当于会删除已有的文件
a 模式 是追加
r+ 读写 读和追加的模式 write 会写到文件末尾
w+ 写读 先创建一个文件然后再写 接着读取, 写的内容也只能在末尾
a+ 追加读写
rb 以二进制的方式读取文件
wb 以二进制的方式写文件 写的内容必须 是byte
rU或者r+U 会把 \r \n \r\n 自动转换为 \n
写的内容只能在末尾
'''
file = open("yesterday","r",encoding="utf-8") # this is file handle
#data = file.read()
#print(data)
#readlines 一次性读取了所有的行 只适合读小文件
for index,line in enumerate(file.readlines()):
if index == 2:
print("------分割--------")
continue
print(line.strip())
file.close()
#这种方式 就是一行行去读
file = open("yesterday","r",encoding="utf-8")
while True:
data = file.readline()
if data == "":
break
else:
print(data.strip(),"-------------")
print("#####################")
#这种方式 就是一行行去读 效率比较高
file = open("yesterday","r",encoding="utf-8")
for line in file:
print(line.strip())
#文件读完 光标到最后 如果想重新读
#看文件读取的位置 记录字符数
file = open("yesterday","r",encoding="utf-8")
print(file.tell())
print(file.readline())
print(file.readline())
print(file.readline())
print(file.tell())
#重置文件读取的位置 参数可以是任意的第几个字符
file.seek(0)
print(file.readline())
print(file.encoding)
#返回操作系统python操作文件接口的编号
print(file.fileno())
#从缓存中刷到硬盘里
file.flush()
#从头清空文件,如果参数是10 表示从10的位置后
file = open("yesterday","a",encoding="utf-8")
file.seek(10)
file.truncate(10)
file.close()
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
#with 帮组自动关闭文件
with open("yesterday","r",encoding="utf-8") as f:
for line in f:
print(line)
#打开多个文件
with open("yesterday","r",encoding="utf-8") as f, \
open("yestarday2","r",encoding="utf-8") as f2,\
open("yesterday","r",encoding="utf-8"):
for line in f:
print(line)
函数
简单理解 java中的方法
格式
def function_name(args):
return
return 可以写也可以不写
如果一个函数没有返回值 在调用该方法的时候
eg:
def func1():
print("123")
a = func1()# a 接收到的值 None
返回值 也可以是
return 1,2,3,[1,2,3]
返回的对象将会以一个元组的形式返回
函数的参数
参数可以是形参,也可以是实参
形参可以设置默认值
def func(name,age,sex="m"):
pass
实参分为 位置参数和关键参数 关键参数必须放在位置参数之后
eg:
def func(name,age,sex):
pass
func("zhangsan",12,"男")# 位置参数
func("lisi",age= 12,sex = "男") 关键参数
非固定参数
两种
def func1(name,age,*args):
print(name,age,args)
func1(1,25,123123) #args是元组的形式输出
def func2(name,age,**kwargs):
print(name,age,kwargs)
func2(1,2,qq="1",qqw="2")#kwargs是字段的形式输出
局部变量和全局变量
局部变量的作用范围
name = "zhangsan"
def change_name(name):
print("before:",name)
name = "lisi"
print("after:",name)
change_name(name)
print(name)
全局变量 函数内一般是改不了的 一般不推荐修改全局变量
company = "company"
def change_name(name):
#global company #加这个 在函数内修改后会全局生效
print("before:",name)
name = "lisi"
company = "company1"
print("after:",name)
name = "zhangsan"
change_name(name)
print(name)
print(company)