python_day3

一.  集合操作

  •     去重,把一个列表变成集合,就去重了
  •       关系测试 ,测试两组数据之前的交、差、并、关系

   

 1 #assemble 去重   关系测试
 2 
 3 list1=[1,2,3,4,5,6,2,3]
 4 list2=[3,4,5,6,7,8,7,8]
 5 list3=set([1,2,5])
 6 list4=set([1,2,3,4,5,6,7,8,9])
 7 
 8 list1=set(list1)   #变成集合后就自动去重
 9 list2=set(list2)
10 
11          #交集   intersection
12 print(list1 .intersection(list2))
13 print(list1 & list2)
14 
15             #并集  union
16 print(list1.union(list2))
17 print(list1 | list2)
18 
19           #差集  difference
20 print(list1.difference(list2))
21 print(list1 - list2)      # in list1 but no in list2
22 print(list2 - list1)      # in list2 but no in list1
23 
24         #对称差集 symmetric difference
25 print(list1.symmetric_difference(list2))
26 print(list1 ^ list2)                      #把两个集合都重复的去掉
27 
28           #子集  issubset
29 print(list1.issubset(list4))          #list1是list4的子集
30 
31          #父集  issuperset
32 print(list4.issuperset(list1))       #list4是list1的父集
33 
34 list1.add(123)             #在集合中添加一项
35 list2.update([12,34])     #在集合中添加多项
36 print(list1)
37 print(list2)
38 
39 list3.remove(5)      #删除一项
40 print(list3)
41 
42 
43 print(len(list4))      #集合的长度
44 
45 print(5 not in  list3) #5不在集合3中?
assemble

 

二.文件操作  (重点!)

  

 1 #Author : Felix Li
 2 # 文件的操作
 3 
 4               #基础操作
 5 
 6 #f=open("yesterday","r",encoding="utf-8")  #文件句柄
 7 
 8 #f.write("\n--------------------\n我爱济南!\n")
 9 #data=f.read()
10 #f.close()
11 #print(data)
12 
13 
14 
15 '''
16 
17            #高效 的写法  打开文件,读取文件
18         
19 f=open("yesterday","r",encoding="utf-8")
20 
21 count=0
22 for line in f:      #一行行的读 ,内存里只有一行代码   ,f变成了迭代器
23     if count== 9:
24         print("------我不打印这一行!--------")
25         count+=1
26         continue
27     print(line)
28     count += 1
29 
30 
31 
32 
33              #low loop
34 
35 for index,line in enumerate(f.readlines()): #把文件变成一个列表  适合读小文件
36     if index == 9:
37         print("------我不打印这一行")
38         continue
39     print(line.strip())
40 
41 for i in range(5):            #读前五行
42     print(f.readline())
43 
44 #print(f.encoding) #打印文件编码
45 
46 
47 
48 
49 import sys,time                 #进度条
50 for i in range(50):
51     sys.stdout.write(">")
52     sys.stdout.flush()
53     time.sleep(0.1)
54 
55 
56 
57 f=open("yesterday","r+",encoding="utf-8")
58 print(f.readline())
59 print(f.readline())
60 print(f.readline())
61 print(f.readline())
62 print(f.tell())
63 f.write(".............")
64 print(f.readline())
65 '''
file

 

三.字符编码与转码

    ASCII只能存在英文或者特殊字符

 

 1 #Author : Felix Li
 2 
 3 import sys
 4 print(sys.getdefaultencoding())
 5 
 6 s="我爱济南"
 7 print(s)
 8 s_gb2312=s.encode("gb2312")        #把unicode转成gb2312
 9 print(s_gb2312)
10 
11 gb2312_to_unicode=s_gb2312.decode("gb2312")
12 print(gb2312_to_unicode)             #把gb2312转成unicode
13 
14 gb2312_to_utf8=s_gb2312.decode("gb2312").encode("utf_8")
15 print(gb2312_to_utf8)           #把gb2312转成utf8
encode_decode

py3中  的 encode还会把string--->bytes类型

 

四.函数与函数式编程

1、    编程方法:

  •       面向对象  类  class
  •       面向过程   过程  def
  •       函数式编程  函数   def

2、函数的优点

  •    可扩展
  •    可减少重复代码
  •  程序易维护 ,保持一致性

3. 形参与实参

   非固定参数

 1 #Author : Felix Li
 2 
 3 '''
 4 def text1():
 5     # text1
 6      print("函数式编程输出")
 7      return 0
 8      print("出不来")
 9 text1()
10 x=text1()
11 print(x)
12 
13 
14 def text2(x,y,z):  #形参和实参
15     print(x+2)
16     print(y/2)
17     print(z*x)
18 
19 text2(2,15,3)
20 
21 
22 #*args:接受N个位置参数,转化成元组
23 
24 def test3(x,*args):
25     print(x)
26     print(*args)
27 test3(1,2,3,4,5,6)
28 
29 '''
30 
31 
32 
33 
34 #**kwargs:把N个关键字参数,转成一个字典的方式
35 
36 def test4(name,age=24,*args,**kwargs):
37     print(name)
38     print(age)
39     print(args)
40     print(kwargs)
41 test4('felix',45,50,60,sex="man",ars='山东省')
形参实参 非固定参数

 

 

4.默认参数

   def  test(x,y=2)

         print(x)

         print(y)

  test(1)

#默认参数的特点:调用函数的时候,默认参数非必须传递

   默认参数的用途: 默认安装值

5、局部变量,全局变量

  列表 字典 集合  类  都可以 局部 改 全局

 

6、递归函数 (常用)

     特点:

  •      必须有一个明确的结束条件
  • 每次进入更深一层时,问题规模比上次递归应该减少
 1 #Author : Felix Li
 2 '''
 3 递归特性:(recursion)
 4 
 5 1. 必须有一个明确的结束条件
 6 
 7 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
 8 '''
 9 
10 # def rec(n):
11 #     print(n)
12 #     if int(n/2)>0:
13 #         return rec(int(n/2))
14 #     print("-->",n)
15 # rec(10)
recursion

 

7、高阶函数

    

1 def calc(a,b,f):
2     return f(a)+f(b)
3 
4 add=calc(2,-3,abs)
5 print(add)
高阶函数

 

posted @ 2017-11-30 19:42  任重道远21  阅读(135)  评论(0)    收藏  举报