设为首页 收藏本站
查看: 535|回复: 0

[经验分享] python day three

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-4 09:43:07 | 显示全部楼层 |阅读模式
一、SET集合
    set集合是无序的,不重复的。
    1.创建
第一种:
s1 = {"123","456"}     #集合用大括号包起来,字符串用逗号隔开
第二种:
li = [11,22,33]
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 = [11,22]
          f1(li)
          输出:([11,22])
      例二:当实际参数前也加一个*时,函数会对迭代参数里边的所有元做一个for循环,然后赋值到元祖里;

          def f1(*args):
              print (args)
          li = [11,22]
          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= [11,22]
f1(li)             #这里的li为引用,不是重新赋值
print (li)         #结果为[11,22,999]
    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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-239075-1-1.html 上篇帖子: Python学习-文件操作 下篇帖子: CentOS 6 安装 Python3.5 python
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表