zoukankan      html  css  js  c++  java
  • python 集合、函数、文件操作

    集合

    一、集合的特性

    无序,不重复

    二、集合的创建方法

    1. 大括号

    >>> s = {11, 22, 33, 11}
    >>> s
    {33, 11, 22}

     

    2.初始化函数set

    >>> s = set((11,22,33,11))
    >>> s
    {33, 11, 22}

    还可以使用set创建空集合

    >>> s = set()
    >>> s
    set()

    调用set()函数的时候相当于执行了python中 set类的__init__方法,同样的使用s = {11,22,33}创建集合的时候也调用了set类的 __init__方法。

     

    三、集合的方法

    1.add方法

    向集合中添加一个元素,如果该元素存在,则执行无效

    >>> s
    {33, 11, 22}
    >>> s.add(44)
    >>> s
    {33, 11, 44, 22}
    >>> s.add(11)
    >>> s
    {33, 11, 44, 22}

     2.clear方法

    清空集合中的所有元素

    >>> s
    {33, 11, 44, 22}
    >>> s.clear()
    >>> s
    set()

    3.copy方法

    获得一个集合的副本,并且属于浅拷贝。

    >>> s
    {33, 11, 22}
    >>> s1=s.copy()
    >>> s1
    {33, 11, 22}
    >>> id(s)
    11997704
    >>> id(s1)
    11998376

    4.difference方法

    A.difference(B),在集合A中但不再集合B中

    >>> s
    {33, 11, 22}
    >>> s1 = {22,33,44}
    >>> s1
    {33, 44, 22}
    >>> s.difference(s1)
    {11}

    5. difference_update方法

    A.difference_update(B),类似difference,区别是将结果复制给A.

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.difference_update(s1)
    >>> s
    {11}

    6.discard方法

    移除集合中的某个元素,如果该元素不在集合中,则什么也不做。

    >>> s1
    {33, 44, 22}
    >>> s1.discard(22)
    >>> s1
    {33, 44}
    >>> s1.discard(55)
    >>> s1
    {33, 44}

    7.remove方法

    移除集合中的某个元素,如果该元素不再集合中,则报错

    >>> s1
    {33, 44, 22}
    >>> s1.remove(22)
    >>> s1
    {33, 44}
    >>> s1.remove(55)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 55

    8.intersection方法

    返回两个集合的交集

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.intersection(s1)
    {33, 22}

    9.intersection_update方法

    A.intersection_update(B),返回集合A和集合B的交集,并将结果赋值给A

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.intersection_update(s1)
    >>> s
    {33, 22}

    10.symmetric_differece方法

    返回两个集合交集的补集

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.symmetric_difference(s1)
    {11, 44}

    11.symmetric_difference_update方法

    A.symmetric_difference_update(B),返回两个集合交集的补集,并将结果赋值给A

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.symmetric_difference_update(s1)
    >>> s
    {11, 44}

    12.union 方法

    返回两个集合的并集

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.union(s1)
    {33, 22, 11, 44}

    13.upadate方法

    A.update(B),以集合B扩展集合A

    >>> s
    {33, 11, 22}
    >>> s1
    {33, 44, 22}
    >>> s.update(s1)
    >>> s
    {33, 22, 11, 44}

    14.isdisjoint方法

    如果两个集合没有交集的话返回True

    >>> s
    {33, 22}
    >>> s1
    {33, 44, 22}
    >>> s2
    {44, 55}
    >>> s.isdisjoint(s1)
    False
    >>> s.isdisjoint(s2)
    True

    15.issubset方法

    A.issubset(B),判断集合A是不是集合B的子集

    >>> s
    {33, 22}
    >>> s1
    {33, 44, 22}
    >>> s.issubset(s1)
    True

    16.issuperset方法

    A.issuperset(B),判断集合A是不是集合B的父集合

    >>> s
    {33, 22}
    >>> s1
    {33, 44, 22}
    >>> s1.issuperset(s)
    True

    17.pop方法

    随机移除集合中的一个元素,并返回该元素

    >>> s1
    {33, 44, 22}
    >>> s1.pop()
    33

    函数

    函数就是最基本的一种代码抽象的方式。

    一、函数的定义

    def 函数名(参数):
         . . .
         函数体
         . . . 
         返回值

    定义函数有一下要点:

    def     关键字

    函数名 用于调用、标识和区别其他函数

    函数体 函数中实现逻辑的地方

    参数    为函数提供数据,是函数的应用场景更广泛

    返回值 函数执行完成后最后返回的值或者标识

    二、 函数的参数

    1、普通参数(位置参数)

    def foo(name, passwd)
        print (name, passwd)
    
    foo(xiaoming, 123)
    
    foo(hanmeimei, 456)

    函数普通参数,接收特定个数的参数,位置必须对应正确

    2、默认参数

    def foo(name, school='beida')
          return name in school
    
    
    foo(xiaoming)
    
    xiaoming in beida
    
    foo(hanmeimei)
    
    hanmeimei in beida

    默认参数给予参数特定的默认值,函数调用时默认参数如果不指定参数值,则使用默认参数,如果指定参数值,则使用指定参数。

    3、动态参数1-接收任意数量的位置参数

    def foo(*args):
         print args 
    
    
    
    foo(11,22,33,44,55,66)
    
    11,22,33,44,55,66

    4、动态参数2-接收任意数量的关键字参数

    def foo(**kwargs):
         print kwargs
    
    foo(name=xiaoming, age=18)
    
    {name:xiaoming, age:18}

    5、动态参数3-接收任意数量的位置参数和任意数量的关键字参数

    def foo(*args, **kwargs):
         print args, kwargs
    
    foo(11,22,33,44,name=xiaoming, age=18)
    
    (11,22,33,44){'name':'xiaoming', 'age':18} 

    三、 内置函数

    1.abs()

    返回一个数的绝对值。参数可以是整数或浮点数,如果参数是一个复数,将会返回它的模。

    2.all(iterable)

    如果 iterable(迭代器) 中所有元素都为 true (或者iterable 为空)则返回 True。

    3.any(iterable)

    假如iterable 里任意一个元素是True,则返回True。假如iterable是空, 返回 False。

     

    4.ascii(object)

    效果如同 repr(),返回一个可打印字符串,但是 repr() 返回的字符串中的非 ASCII 字符使用 \x, \u or \U 转义字符进行了转义。

    5.bin(x)

    将一个整数转换成一个二进制字符串。结果是一个有效的Python表达式。假如 x 不是一个 Python int 类型的对象, 那它必须定义一个 __index__() 方法,方法的返回值是整数(integer)

    6.bytes([source[, encoding[, errors]]])

    返回一个新的“bytes”对象,它是一个由0 <= x < 256 范围内的整数组成的不可变序列。

    7.chr(i)

    返回一个Unicode编码是整数i的字符串,例如, chr(97)返回字符串 'a'这个功能与ord()相反。这个参数正确的范围从0 到1,114,111 (十六进制表示是0x10FFFF ). 如果i超出这个范围,将会触发ValueError

    8.ord(c)进行

    给定一个代表Unicode编码的字符,返回一个代表这个字符的整。

    文件操作

     open函数

    该函数生成一个打开的文件句柄,文件句柄很多方法,利用这些方法进行文件操作。

    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):

    打开文件的模式有:

    r 只读(默认)

    w 只写,写之前会清空文件,对文件进行truncate,不存在则创建。

    x 只写,不存在则创建,存在则报错。

    a 追加,在文件原有的基础上追加新的内容。

    + 模式

    r + 读写,用的最多,写之前可以使用seek函数移动文件指针

    w + 读写,写之前会清空文件

    x + 读写,如果文件存在则报错

    a + 读写,追加写

    b模式

    rb 只读,以二进制的方式读文件

    wb 只写,以二进制的方式写文件

    ab 追加写,以二进制的方式写文件

    xb 只写,以二进制的方式写文件

    文件操作的方法

    def close(self, *args, **kwargs): # real signature unknown
            关闭文件
            pass
    
        def fileno(self, *args, **kwargs): # real signature unknown
            文件描述符  
            pass
    
        def flush(self, *args, **kwargs): # real signature unknown
            刷新文件内部缓冲区
            pass
    
        def isatty(self, *args, **kwargs): # real signature unknown
            判断文件是否是同意tty设备
            pass
    
        def read(self, *args, **kwargs): # real signature unknown
            读取指定字节数据
            pass
    
        def readable(self, *args, **kwargs): # real signature unknown
            是否可读
            pass
    
        def readline(self, *args, **kwargs): # real signature unknown
            仅读取一行数据
            pass
    
        def seek(self, *args, **kwargs): # real signature unknown
            指定文件中指针位置
            pass
    
        def seekable(self, *args, **kwargs): # real signature unknown
            指针是否可操作
            pass
    
        def tell(self, *args, **kwargs): # real signature unknown
            获取指针位置
            pass
    
        def truncate(self, *args, **kwargs): # real signature unknown
            截断数据,仅保留指定之前数据
            pass
    
        def writable(self, *args, **kwargs): # real signature unknown
            是否可写
            pass
    
        def write(self, *args, **kwargs): # real signature unknown
            写内容
            pass
    
        def __getstate__(self, *args, **kwargs): # real signature unknown
            pass
    
        def __init__(self, *args, **kwargs): # real signature unknown
            pass
    
        @staticmethod # known case of __new__
        def __new__(*args, **kwargs): # real signature unknown
            """ Create and return a new object.  See help(type) for accurate signature. """
            pass
    
        def __next__(self, *args, **kwargs): # real signature unknown
            """ Implement next(self). """
            pass
    
        def __repr__(self, *args, **kwargs): # real signature unknown
            """ Return repr(self). """
            pass
    
        buffer = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        closed = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        encoding = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        errors = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        line_buffering = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        name = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        newlines = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _CHUNK_SIZE = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _finalizing = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    View Code

    管理上下文

    with open('file1', 'r') as f1:
         for line in f1:
             . . . . .
          

    with 语句可以自动关闭文件,在with语句快内操作文件

    在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:

    with open('file1', 'r') as f1, with open('file2', 'r') as f2:
           for line1 in f1:
               for line2 in f2:
                   . . . . . .

    lambda表达式

    lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如下:

    lambda语法如下:

    lambda [arg1[,arg2,arg3....argN]]:expression

    lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。

    如果没有参数,则lambda冒号前面就没有

    如果有参数,则lambda冒号就有变量,可以是多个变量用逗号隔开

    >>>f1 = lambda:'without canshu'
    >>>f1()
    'without canshu'
    
    >>>f2 = lambda x,y: x * Y
    >>>f2(2,3)
    6
  • 相关阅读:
    zz学习技术的三部曲:WHAT、HOW、WHY
    zz一种理想的在关系数据库中存储树型结构数据的方法
    某外企SQL Server面試題
    C语言中的指针 &与*
    剖析SQL Server执行计划(zz)
    UNICODE,GBK,UTF8区别
    (Part 1Chapter 14) High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI
    关于GtkTreeView和 MVC的一篇好文章 入木三分
    一个混合 MPI_Init() 和 gtk_init() 的实例序
    (Part 2Chapter 57) High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI
  • 原文地址:https://www.cnblogs.com/9527chu/p/5520752.html
Copyright © 2011-2022 走看看