435243 发表于 2016-7-4 09:43:07

python day three

一、SET集合
    set集合是无序的,不重复的。
    1.创建

第一种:
s1 = {"123","456"}   #集合用大括号包起来,字符串用逗号隔开
第二种:
li =
s2 = set(li)
#当执行set()的时候,实际上是调用set的__init__来对li里边的元素做一个for循环,然后转成set。



    2.功能

1.s1.add() #增加元素
2.s1.clear() #清空集合内容
3.s1.copy()#浅复制
4.s1.difference#a中存在,b中不存在
5.s1.symmetric_difference #a中存在,b中不存在拿出来 和 b中存在,a中不存在拿出来(也称对称差级)

6.s1.difference_update #a中存在,b中不存在拿出来,然后重新赋值给左边的变量s1
7.s1.symmetric_difference_update #a中存在,b中不存在拿出来 和 b中存在,a中不存在拿出来,然后重新赋值给左边的变量s1
8.s1.discard #移除特定元素,如果没有元素不报错
9.s1.remove #移动特定元素,如果没有会报错
10.s1.pop #随机移除,把移除的值赋给变量
11.s1.intersection #取两个变量的交集(就是两个变量里边相同的元素)
12.s1.inteersection_update #取两个变量的交集,然后赋值给左边的变量s1
13.s1.isdisjoint #如果有交集,返回True,否则返回False
14.s1.issubset #一个变量是否是另一个变量的子序列
15.s1.union #并集,就是把两个变量的元素联合起来
16.s1.update #批量添加元素,接收一个可迭代的对象,例如:列表、元祖、字符串



    3.集合练习题

      有两个字典,现在要把新的字典里边的内容添加到旧的字典里,找出

      1.应该删除的项

      2.应该添加的项

      3.应该更新的项
      需求分析:

            1.首先确定可以用set功能来实现

            2.需要把字典的keys读取出来转成set集合

            3.找出旧字典应该删除、添加、更新的项



#旧字典
old_dict = {
    '#1':8,
    '#2':4,
    '#4':2,
}
#新字典
new_dict = {
    '#1':4,
    '#2':4,
    '#3':2,
}
old_set = set(old_dict.keys())#把旧字典keys转换成集合
new_set = set(new_dict.keys())#把新字典keys转换成集合

remove_set = old_set.difference(new_set)    #找出应该删除的
add_set = new_set.difference(old_set)       #找出应该添加的
update_set = old_set.intersection(new_set)#找出应该更新的

print(remove_set,add_set,update_set)      #打印找出的删除、添加、更新


输出:
{'#4'} {'#3'} {'#1', '#2'}
二、函数
    函数分为自定义函数和内置函数

    1、定义函数

1.函数关键字def
2.函数名
3.写个()
4.函数体(具体内容)
5.返回值
6.自定义的函数自己不被执行
例如:
def aa():
    函数体

在PyCharm中可以点击代码左端空白处,可以打断点执行代码,查看代码执行流程。
    2、执行函数返回值

函数利用try retrun来实现返回值。
def aa():
    try :
      函数体
    except:
      return False #失败返回False
    else:
      return True #成功返回True
注意:
1.在函数中一旦执行了return,函数的执行过程立即终止,不会再往下走!
2.函数中如果没有指定return,默认python返回一个return值为None

    3、函数的基本参数

1.普通参数 #一一对应,严格按照顺序执行,将实际参数赋值给行为参数;
2.默认参数 #当函数执行的时候没有给变量赋值的时候,使用默认参数;设置默认参数的行为参数要放到最后,可以连着多个;
3.指定参数 #给指定的参数赋值
(函数冒号左边括号里边的叫做行为参数;执行函数的时候,括号里边的参数叫做实际参数。)

    4、函数的动态参数

1.行为参数之前加一个* 就可以接受多个实际参数(接收迭代参数列表、元组、字符串,不接收字典)输出格式为元祖,按顺序处理。
      def f1(*args):
          print ("abc","123")
      例一:当实际参数前不加*时,函数会把迭代参数整体作为一个元素放到元祖里。
          def f1(*args):
            print (args)
          li =
          f1(li)
          输出:()
      例二:当实际参数前也加一个*时,函数会对迭代参数里边的所有元做一个for循环,然后赋值到元祖里;

          def f1(*args):
            print (args)          li =           f1(*li)          输出:(11,22)2.行为参数之前加两个* 就可以接受字典参数,输出格式为字典,处理key、values键值对
      def f1(**args):
          print (args)
      f1('n1'='aaa','n2'='ddd')
      输出:{'n1':'aaa','n2':'ddd'}
3.万能参数(就是*args和**kwargs一起使用,它会自动识别是列表还是字典,然后赋值给*args和**kwargs)



    5、利用动态函数实现format功能

格式:str.format
功能:实现格式化输出方法(同万能参数功能,都是通过*args和**kwargs)
例如:s = "i am {0},age{}".format('abc','123')(括号里边的abc和123也可以写成一个列表)
      s = "i am {0},age{}".format(*['abc','123'])
输出:i am abc,age 123

    6、函数内容补充

例一:
def f1(a1,a2):
    return a1+a2
def f1(a1,a2):          #当运行到这里的时候f1已经重新赋值,内存段也不一样了,
    return a1*a2
result = f1(8*8)
print (result)          #所以结果是64      


例二:
python函数中,当传递参数的时候,python默认为引用参数,不是重新复制参数赋值。
def f1(a1):
    a1.append(111)
li=
f1(li)             #这里的li为引用,不是重新赋值
print (li)         #结果为

    7、全局变量

1.作用域内的变量只能作用域内使用;
2.全局变量所有作用域都可以读取,但不能修改;
3.局部变量优先于全局变量;
4.作用域要修改变量,需要在作用域中加global+变量名;
5.如果全局变量是列表或者字典时,作用域不加global可直接添加元素,但不能重新赋值;如果重新赋值,要加global+变量名;


(注意:所有全局变量名要都用大写,方便区分)

    8、函数式编程实现登录和注册



三、三元运算(也称三目运算,if else的简写)

用来简单的if else的运用;
例如:
常规的写法:
    if 1 == 1:
      name = 'aaa'
    else:
      name = 'bbb'
三元运算写法:
    name = 'aaa' if 1 == 1 else 'bbb'



四、lambda表达式

用作简单函数的简写,对简单的函数赋值做操作,只能写一行。
例如:
    def f1(a):
      return a+100
lambda写法:
    f1 = lambda 1: a+100    #return默认隐含了

五、内置函数

1. .abs()#取绝对值
2. .all()#接收可以被迭代的对象。当括号里所有为真时,为真;括号里只有一个为假时,就为假。
3. .any()#括号里只要有真,就为真。
4. .ascii()#自动执行某对象的的__str__方式
5. .bin()#接收十进制,然后转成二进制 0b代表二进制
6. .oct()#接收十进制,然后转成八进制 0o代表八进制
7. .nex()#接收十进制,然后转成十六进制 0x代表十六进制
8. .bool() #真或假、True或False
9. .bytes()   #把字符串转成字节类型 例如:bytes(s,encoding"utf-8")
10. .bytearry() #把字符串转成字节类型,放到一个列表里。

五、文件操作
1.打开文件
    f = open ('文件名字','什么方式')
    打开文件的方式有:
      1.r 只读
      2.w 只写(清空之后再写)
      3.x (如果文件存在,就报错;如果不存在,就创建再写内容)

      4.a 追加永远是追加到光标所在位置的最后
      5.r+读写
      6.w+先清空再写读
      7.a+读写,但是永远是追加到最后
      8.x+读写
      9.b 以二进制的方式读写
      10.b+
2.操作文件(文件操作功能)
      1.read()
      2.tell()
      3.seek()
      4.write()
      5.close()
      6.flush()
      7.readable()
      8.seekable()
      9.readline()
      10.readlines()
      11.truncate()
      12.for循环文件对象
         例如;
               f = open("aaa.txt",'r=')
                   for line in f:   #会把f里边的一行一行读取出来赋值给line
                     print (line)
3.with 同时打开多个文件
      with open("db1",'r',encoding="utf-8") as f1 ,open('db2','w',encoding="utf-8")as f2:
例一:同时打开两个文件,读取第一个文件,同时写入第二个文件,当写到10行时退出;
      with open("db1",'r',encoding="utf-8") as f1 ,open('db2','w',encoding="utf-8")as f2:
         times = 0
         for line in f1:
               times += 1
               if times <= 10:
                   f2.write(line)
               else:
                   break
例二:当有个文件,把文件里边的aaa改成bbb
       with open("db1",'r',encoding="utf-8") as f1 ,open('db2','w',encoding="utf-8")as f2:
         for line in f1:
               new_str = line.replace('aaa','bbb')
               f2.write(new_str)



页: [1]
查看完整版本: python day three