1、集合set

集合是无序的,不重复的,主要作用:

去重,把一个列表变成集合,就可以自动去重

关系测试,测试两组数据的交集,差集,并集等关系

操作例子如下

  1. list_1 = [1,4,5,7,3,6,7,9]
  2. list_1=set(list_1)
  3.  
  4. list_2 = set([2,6,0,66,22,8,4])
  5.  
  6. print(list_1,list_2)
  7.  
  8. print(list_1,type(list_1))
  9. 运行结果如下:
  10. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  11. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  12. {1, 3, 4, 5, 6, 7, 9} <class 'set'>
  13.  
  14. Process finished with exit code 0

关于集合的功能及操作

  1. 关于就集合的交集intersection
  2. print(list_1.intersection(list_2))
  3. print(list_1 & list_2)
  4. 运行结果如下:
  5. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  6. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  7. {4, 6}
  8. {4, 6}
  9. #并集union
  10. print(list_1.union(list_2))
  11. print(list_1 | list_2)
  12. 运行结果如下:
  13. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  14. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  15. {0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}
  16. {0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}
  17.  
  18. Process finished with exit code 0
  19. #差集difference
  20. print(list_1.difference(list_2))
  21. print(list_2.difference(list_1))
  22. print(list_1-list_2)
  23. 运行结果如下:
  24. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  25. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  26. {0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}
  27. {0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}
  28.  
  29. Process finished with exit code 0
  30. #子集issubset
  31. list_3=set([1,3,7])
  32. print(list_3.issubset(list_1))
  33. print(list_1.issubset(list_2))
  34. #父集issuperset
  35. print(list_1.issuperset(list_2))
  36. 运行结果如下:
  37. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  38. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  39. True
  40. False
  41. False
  42.  
  43. Process finished with exit code 0
  44. #对称差集
  45. print(list_1.symmetric_difference(list_2))
  46. print(list_1 ^ list_2)
  47. 运行结果如下:
  48. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  49. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  50. {0, 1, 2, 66, 3, 5, 7, 8, 9, 22}
  51. {0, 1, 2, 66, 3, 5, 7, 8, 9, 22}
  52.  
  53. Process finished with exit code 0
  54. #判断是否有交集,如果没有返回True
  55. list_4 = set([5,6,8])
  56. print(list_4.isdisjoint(list_3))
  57. 运行结果如下:
  58. D:\python35\python.exe D:/python培训/s14/day3/set集合.py
  59. {1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}
  60. True
  61.  
  62. Process finished with exit code 0
  63. #增加add
  64. list_1.add(999)
  65. print(list_1)
  66. #更新
  67. list_1.update([888,777,555])
  68. print(list_1)
  69. #删除
  70. list_1.remove(4334)
  71. print(list_1)
  72. #随机删除
  73. list_1.pop()
  74. print(list_1)
  75. #如果没有存在不会报错,如果是remove的时候会报错
  76. list_1.discard()
  77. #集合的长度
  78. len(list_1)
  79. # x in s 判断x是否是s的成员

2、关于文件操作

f = open("file.txt","r",encoding="utf-8") #文件句柄,即文件内存对象

写操作w,这个会将文件清空,即将文件重新写一遍,并且如果没有这个文件会创建

既读又写a----append  只能向文件中追加内容,也是不能读

读写r+

写读w+

追加写a+

  1. #循环读这个文件
  2. f=open("file.txt","r",encoding="utf-8")
  3. for i in f.readlines():
  4. print(i.strip())
  5. f=open("file.txt","r",encoding="utf-8")
  6. for index,line in enumerate(f.readlines()):
  7. if index==2:
  8. print("分割线".center(10,"-"))
  9. continue
  10. print(line.strip())
  11. 但是上面的效率比较低
  12. 下面这种方式更好
  13. f=open("file.txt","r",encoding="utf-8")
  14. count =0
  15. for line in f:
  16. count +=1
  17. if count == 3:
  18. print("分割线".center(10, "-"))
  19. print(line.strip())
  20.  
  21. ftell()打印当前的位置
  22. f.seek()返回某个位置
  23. f=open("file.txt","r",encoding="utf-8")
  24. print(f.tell())
  25. print(f.readline())
  26. print(f.readline())
  27. print(f.readline())
  28. f.seek(0)
  29. print(f.tell())
  30. print(f.readline())
  31.  
  32. 对于上面打开文件的时候用的方式,后面都需要加f.close(),有一种方式可以省却这个步骤
  33. with open(“file.txt”,‘r’) as f:

3、 Unicode不管是中文和因为都是占两个字符,16位

ASCII 不存在中文,8位

UTF-8可变长字符编码

在utf-8中所有的银根字符用ascii存放,

所有的中文字符都是3个字节

通过上图解释关于不同字符编码之间的转换

GBK转换成UTF-8

需要先通过decode解码转换为Unicode编码格式

再通过encode转换为UTF-8编码格式

4、 函数

函数是指将一组语句的集合通过一个名字封装起来,要想执行这个函数,只需调用其函数名字即可

函数的特性:

减少重复代码

是程序易于扩展

使程序变得容易维护

编程语言中函数定义:函数是逻辑结构化和过程化的一种变成方法

一个函数的定义方法:

  1. def test(x):
  2. "the function definitions"
  3. x+=1
  4. return x
  5. print(test(2))
  6. 运行结果如下:
  7. D:\python35\python.exe D:/python培训/s14/day3/func.py
  8. 3
  9.  
  10. Process finished with exit code 0
  11. 其中:
  12. def:定义函数的关键字
  13. test:函数名
  14. ():可以定义参数
  15. “”:文档描述
  16. return:定义返回值
  17.  
  18. 一个函数的例子:
  19. import time
  20.  
  21. def logger_test():
  22. time_format="%Y-%m-%d %X"
  23. time_current = time.strftime(time_format)
  24. with open("a.txt","a+") as f:
  25. f.write('time %s end action\n' %time_current)
  26.  
  27. def test1():
  28. print("test1 starting action...")
  29. logger_test()
  30.  
  31. def test2():
  32. print("test2 starting action...")
  33. logger_test()
  34.  
  35. def test3():
  36. print("test3 starting action...")
  37. logger_test()
  38.  
  39. test1()
  40. test2()
  41. test3()
  42. 运行结果如下:
  43. D:\python35\python.exe D:/python培训/s14/day3/def函数.py
  44. test1 starting action...
  45. test2 starting action...
  46. test3 starting action...
  47. 并生成a.txt文件内容如下:
  48. time 2016-08-10 10:52:49 end action
  49. time 2016-08-10 10:52:49 end action
  50. time 2016-08-10 10:52:49 end action
  51. 从这里也可以看出,通过定义函数,可以让程序更易于扩展

5、 函数和过程

过程定义:就是没有返回值的函数,在一个函数中没有使用return显示定义返回值时,python解释器会隐式的返回None,所以在python中即便是过程也算做函数

6、关于函数的返回值

  1. 代码如下:
  2. def test01():
  3. pass
  4.  
  5. def test02():
  6. return 0
  7.  
  8. def test03():
  9. return 3,2,"hello","zf",["zhaofan","name"],{"name":"dean","age":23}
  10. t1 = test01()
  11. t2=test02()
  12. t3=test03()
  13.  
  14. print("from test01 return is %s:" %type(t1),t1)
  15. print("from test01 return is %s:" %type(t2),t2)
  16. print("from test01 return is %s:" %type(t3),t3)
  17. 运行结果如下:
  18. D:\python35\python.exe D:/python培训/s14/day3/函数2.py
  19. from test01 return is <class 'NoneType'>: None
  20. from test01 return is <class 'int'>: 0
  21. from test01 return is <class 'tuple'>: (3, 2, 'hello', 'zf', ['zhaofan', 'name'], {'name': 'dean', 'age': 23})
  22.  
  23. Process finished with exit code 0

从上面可以看出:

返回值=0:返回None

返回值的个数为1返回object

返回值的个数大于1:返回tuple

7、 函数的调用:

调用函数的时候()里可以有参数也可以没有

参数:

形参和实参

形参:形式参数,不是实际存在的,是虚拟变量,在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参

位置参数和关键字参数(标准调用:实参与形参的位置一一对应;关键字参数调用:位置无序固定)

默认参数

参数组

注意:关键参数不能再位置参数前面

关于参数的列子:

  1. #AUTHOR:FAN
  2. #接收N个位置参数,转换成元组的形式
  3. def test1(x,*args):
  4. print(x)
  5. print(args)
  6.  
  7. test1(1,2,3,4,5,6,7)
  8.  
  9. #**kwargs:把N个关键字参数,转换成字典的方式
  10. def test2(**kwargs):
  11. print(kwargs)
  12. print(kwargs["name"])
  13. print(kwargs["age"])
  14. print(kwargs["sex"])
  15. #
  16. #
  17. test2(name="zhaofan",age=22,sex="男")
  18. test2(**{"name":"zhaofan","age":22,"sex":"男"})
  19.  
  20. def test3(name,**kwargs):
  21. print(name)
  22. print(kwargs)
  23.  
  24. test3("alex",age=12,sex="mm")
  25.  
  26. def test4(name,age=18,**kwargs):
  27. print(name)
  28. print(age)
  29. print(kwargs)
  30.  
  31. test4("zhaofan",sex="zz",age=12,hobby="tsl")
  32.  
  33. def test5(name,age=12,*args,**kwargs):
  34. print(name)
  35. print(age)
  36. print(args)
  37. print(kwargs)
  38.  
  39. test5("zhaofan",age=34,sex="m",hobby="tsla")

8、变量

局部变量只在函数里生效

字符串、整数等在函数里更改不会影响全局变量

列表和字典,集合,类等可以在函数里进行更改

例子演示:

  1. #AUTHOR:FAN
  2. name = "zhaofan"
  3. def change_name(name):
  4. print("before change:",name)
  5. name = "dean"
  6. print("after change:",name)
  7.  
  8. change_name(name)
  9. print("-----",name)
  10. 程序运行结果:
  11.  
  12. D:\python35\python.exe D:/python培训/s14/day3/局部变量2.py
  13. before change: zhaofan
  14. after change: dean
  15. ----- zhaofan
  16.  
  17. Process finished with exit code 0

9、  递归

  1. def calc(n):
  2. print(n)
  3. if int(n/2) >0:
  4. return calc(int(n/2))
  5. print("----->",n)
  6.  
  7. calc(10)
  8. 运行结果:
  9. D:\python35\python.exe D:/python培训/s14/day3/递归.py
  10. 10
  11. 5
  12. 2
  13. 1
  14. -----> 1
  15.  
  16. Process finished with exit code 0

递归的特性:

必须有一个明确的结束条件

每次进入更深一层时,问题规模要比上次减少

递归效率不高

递归循环只能循环999层

python基础之元组、文件操作、编码、函数、变量的更多相关文章

  1. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  2. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

  3. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  4. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  5. python基础知识-day7(文件操作)

    1.文件IO操作: 1)操作文件使用的函数是open() 2)操作文件的模式: a.r:读取文件 b.w:往文件里边写内容(先删除文件里边已有的内容) c.a:是追加(在文件基础上写入新的内容) d. ...

  6. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  7. python基础学习笔记——文件操作

    文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...

  8. Python基础知识(八)----文件操作

    文件操作 一丶文件操作初识 ###f=open('文件名','模式',编码): #open() # 调用操作系统打开文件 #mode #对文件的操作方式 #encoding # 文件的编码格式 存储编 ...

  9. python基础八之文件操作

    python的文件操作 1,打开文件 编码方式要和文件的编码方式相同! #open('路径','打开方式','指定编码方式') f = open(r'E:\pycharm\学习\day8\test', ...

  10. Python基础之 一 文件操作

    文件操作 流程: 1:打开文件,得到文件句柄并赋值给一个变量 2:通过句柄对文件进行操作 3:关闭文件 模式解释 r(读) , w(写) ,a(附加)r+(读写的读), w+(读写的写),a+(读附加 ...

随机推荐

  1. [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)

    冒泡排序: function bubbleSort($array){ $len=count($array); //该层循环控制 需要冒泡的轮数 for($i=1;$i<$len;$i++){ / ...

  2. fabric devenv Vagrantfile配置

    Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload,则不会被强制重新加载. # This is the mount point f ...

  3. oracle的回收站介绍

    昨天做的展示oracle表空间功能剩余空间的功能,发现查询表dba_free_space时特别慢,经网上搜索,说是由于表空间碎片和回收站(Oracle 10g以后才有)引起的,后来搜到一片介绍回收站的 ...

  4. 管理node的版本

    检查当前node的版本 node -v 清除npm cache sudo npm cache clean -f 安装n模块 sudo npm install -g n 切换到别的版本,比如 v4.4. ...

  5. PullToRefresh

    PullToRefreshListView的使用,实现下拉刷新,上拉加载更多.首先是布局文件: <com.handmark.pulltorefresh.library.PullToRefresh ...

  6. appium依赖pom文件注解

    <!-- appium部分 依赖--> <dependency> <groupId>io.appium</groupId> <artifactId ...

  7. JS ECMAScript 5中的every 和 some方法进行逻辑判断

    ECMA Script 5 中新增两个不错的关于数组元素的逻辑运算方法some, every Array.some(function(item){}); Array.every(function(it ...

  8. CentOS 6.5 下 CDH 5.2.1 集群安装(一)

    集群节点数量3 个 192.168.1.170 cdh-master 192.168.1.171 cdh-slave-1 192.168.1.171 cdh-slave-2 一.安装CentOS6.5 ...

  9. pycharm 调试 django 应用

    django 应用 2 种调试方法 1 import pdb;pdb.set_trace()  命令行重启应用 2 命令行启动应用, pycharm 中 Tools -> Attach to P ...

  10. [转] JS中简单的继承与多态

    这里讲了一个最最最简单的JS中基于原型链的继承和多态. 先看一下以下这段代码的实现(A是“父类”,B是“子类”): var A = function(){ this.value = 'a'; this ...