热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Day3:集合、文件操作、函数

一、集合1、集合是一个无序的、不重复的数据集合,它的主要作用如下:(1)去重,把一个列表变成集合就自动去重了(2)关系测试,测试两组数据之间的交集、差集、并集等关系#Author:licylist_

一、集合

1、集合是一个无序的、不重复的数据集合,它的主要作用如下:

(1)去重,把一个列表变成集合就自动去重了

(2)关系测试,测试两组数据之间的交集、差集、并集等关系

# Author:licy
list_1=[1,4,5,7,3,6,7,9]
list_1
=set(list_1)#变成集合
list_2=set([2,6,0,66,22,8,4])
print(list_1,list_2)
#交集
print(list_1.intersection(list_2))
#并集
print(list_1.union(list_2))
#差集 in list_1 but not in list_2
print(list_1.difference(list_2))
print(list_2.difference(list_1))
list_3
=set([1,3,7])
#子集
print(list_3.issubset(list_1))
#父集
print(list_1.issuperset(list_3))
#对称差集,其实就是先将他们并集,然后他们之间都有的要剔除
print(list_1.symmetric_difference(list_2))
#判断两个集合之间是否有交集
list_4=set([5,6,8])
print(list_3.isdisjoint(list_4))
print('--------------------------------------------')
#交集
print(list_1&list_2)
#并集
print(list_1|list_2)
#差集
print(list_1-list_2)
print(list_2-list_1)
#对称差集
print(list_1^list_2)
print('-------------增伤改查----------------')
#添加
list_1.add(999)
#添加多项
list_1.update([33,44,55])
print(list_1)
#任意删除
print(list_1.pop())
#指定删除(都不会返回删除的值,只是remove如果删除没有的元素会报错)
print(list_1.remove(55))
print(list_1.discard(22))
View Code

二、文件操作

# Author:licy
'''
#打开文件
f=open("file",'r',encoding="utf-8")#文件句柄
#读文件
data=f.read()
print(data)

#打开文件
f=open("file2",'w',encoding="utf-8")#文件句柄
#写文件
f.write('我爱北京天安门')

#追加
f=open('file2','a',encoding='utf-8')
f.write('sdfsdfsdfsdfsdf')
f.close()
'''

f
=open("file2",'r',encoding='utf-8')
#读前5行
#
for i in range(5):
#
print(f.readline())
'''低级循环
for index,line in enumerate(f.readlines()):
if index==3:
print('-------------------------')
continue
print(line.strip())
'''
'''
#牛逼循环,效率最高
count=0
for line in f:
if count==3:
print('------------------')
count+=1
continue
print(line)
count+=1
'''
f
=open('file2','r',encoding='utf-8')
print(f.tell())#打印当前位置
print(f.readline())
#print(f.read(50))
print(f.tell())
f.seek(0)
#回到0的位置
print(f.readline())

#打印文件编码
print(f.encoding)
View Code
# Author:licy
import sys,time
for i in range(50):
sys.stdout.write(
'#')
sys.stdout.flush()
time.sleep(
0.1)
flush例子
# Author:licy
f=open("file2",'a',encoding='utf-8')
f.truncate(
11)
View Code

1、读写and写读

# Author:licy
#
这两个臭傻逼就卖法返回去修改
'''
f=open("file2",'r+',encoding='utf-8')#读写
print(f.readline())
f.write('---------------aa--------------')
print(f.readline())
f.close()
'''
f
=open('file2','w+',encoding='utf-8')#写读
f.write('----------------diao----------------1\n')
f.write(
'----------------diao----------------1\n')
f.write(
'----------------diao----------------1\n')
f.write(
'----------------diao----------------1\n')
print(f.tell())
f.seek(
2)
print(f.readline())
f.write(
'shabishabishabi')
f.close()
View Code

2、读、写二进制:

# Author:licy
#

'''
f=open('file2','rb')
print(f.readline())
print(f.readline())
print(f.readline())
'''
#
f=open('file2','wb')
f.write(
'shabialex'.encode())
f.close()
View Code

3、文件修改

步骤:按行读取源文件内容,判断是否为修改内容,如果是,替换之后再将他写入到新文件中,新文件就是替换后的

我草你妈了傻逼alex,装逼货
大傻逼大傻吊
傻逼alex,老男孩儿
旧文件file2

新文件file1

# Author:licy
f=open('file2','r',encoding='utf-8')
f_new
=open('file','w',encoding='utf-8')
for line in f:
if '大傻逼大傻吊'in line:
line
=line.replace('大傻逼大傻吊','李杰')
f_new.write(line)
f.close()
f_new.close()
具体步骤

4、为了避免打开文件后忘记关闭,可以通过管理上下文,即:with

# Author:licy
with open('file','r',encoding='utf-8') as f:
for line in f:
print(line)
View Code

三、函数

1、面向对象:类-------->class

2、面向过程:过程---------->def

(1)定义:没有返回值的函数而已,返回None

# Author:licy
#定义函数
def func1():
"testing"
print('in the func1')
return 0
#定义过程
def func2():
"testing2"
print('in the func2')
x=func1()
y=func2()
print('from func1 return is %s' %x)
print('from func2 return is %s' %y)

3、函数式编程:函数-------->def   其他函数式编程语言:lisp、hashsheel、erlang

(1)定义:

# Author:licy
def test(x):
"The function definitions"
x+=1
return x
def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值

(2)为什么要使用函数:避免写重复代码、方便扩展、保持一致性

(3)函数的返回值:

# Author:licy
def test1():
pass
def test2():
return 0
def test3():
return 0,10,'hello',['alex','b'],{'name':'lcy'}

x
=test1()#返回None
y=test2()#返回0
z=test3()#返回(0,10,'hello',['alex','b'],{'name':'lcy'})
print(x)
print(y)
print(z)
View Code

(4)参数:

# Author:licy
def test(x,y):#x y叫作形参
print(x)
print(y)
test(
1,2)#1 2叫作实参 必须与形参一一对应,多一不可,缺一也不可
test(y=1,x=2)#关键字调用,与形参顺序无关
#
test(x=2,3)#关键参数是不能写在位置参数前面的
test(3,y=2)
关键字参数和位置参数
# Author:licy
def test(x,y=2):#y为默认参数
print(x)
print(y)
test(
1)
test(
1,y=3)
#默认参数特点:调用函数的时候默认参数非必须传递
#
默认参数的用途:需要提前赋默认值的操作
默认参数
# Author:licy
def test(*args):#参数组"*任意变量名"
print(args)
test(
1,2,3,4,5)#返回一个元组
test(*[1,2,3,4,5])#返回一个元组
参数组
# Author:licy
def test(x,*args):
print(x)
print(args)
test(
1,2,3,4,5)
参数组和位置参数结合
# Author:licy
#
**kwargs:把n个关键字参数转换成字典的方式
def test1(**kwargs):
print(kwargs)
print(kwargs['name'])
test1(name
="licy",age=8)
test1(
**{'name':'licy','age':8})
View Code
# Author:licy
def test1(name,**kwargs):#位置参数和字典参数结合
print(name)
print(kwargs)
test1(
'licy',age="licy2")

def test4(name,age=8,**kwargs):#参数组必须在最后
print(name)
print(age)
print(kwargs)
test4(
'licy',sex="",age=3)

def test5(name,age=8,*args,**kwargs):#*args:只能接收n个位置参数,转换成元组的形式
print(name)
print(age)
print(args)
print(kwargs)
test5(
'licy',age=3,sex="m",grade=44)
View Code
# Author:licy
def test1(name,**kwargs):
print(name)
print(kwargs)
logger(
'licy')
def logger(source):
print("from %s" % source)
test1(
'licy',age="licy2")#程序的执行时从上到下的,所以此调用必须放在最后
特殊例子

(5)局部变量:

# Author:licy
school="Japan"#全局变量
def change_name(name):
global school #我要在函数中改这个全局变量
school="zhuolu"
print("before change",name,school)
name
="Licy"#局部变量,只在函数中生效,这个函数就是这个变量的作用域
print("after change",name)
name
="licy"
change_name(name)
print(name)
print(school)
View Code

扩展知识:ctrl+? pycharm注释选中的全部代码

# Author:licy
names=["licy","gxn"]
def change():
names[0]
="Licy"#列表、字典、集合是可以在函数内部修改的
print("函数内部:",names)
change()
print(names)
扩展

(6)递归:

# Author:licy
def cal(n):
print(n)
if int(n/2)>0:
return cal(int(n/2))
cal(
10)
View Code

(7)高阶函数:

# Author:licy
def add(a,b,f):
return f(a)+f(b)
print(add(3,-6,abs))
View Code

推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
zjy396999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有