码迷,mamicode.com
首页 > 编程语言 > 详细

python 集合、函数、文件操作

时间:2016-06-04 00:36:34      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

集合

一、集合的特性

无序,不重复

 

二、集合的创建方法

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

 

python 集合、函数、文件操作

标签:

原文地址:http://www.cnblogs.com/9527chu/p/5520752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!