python基础篇(三)

 一、集合

集合是一个无序的,不重复的数据组合,主要功能如下:

  • 去重,把一个列表变成集合时,会自动把重复的去掉
  • 关系测试,测试两组数据之间的交集、并集、差集等关系

基本操作

# 定义两个集合
>>> s = set([1,2,3,4])
>>> s
set([1,2,3,4])
>>> t = set('hello')
>>> t
set(['h', 'e', 'l', 'o'])
# 已经把hello中的两个l,去重

# 求并集
>>> a = s | b
>>> a
set([1, 2, 3, 'e', 'h', 'l', 'o', 4])

# 求交集
>>> b = s & b
>>> b
set([])

# 求差集
>>> c = s - t
>>> c
set([1, 2, 3, 4])

# 对称差集
>>> d = s ^ t
>>> d
set([1, 2, 3, 4, 'h', 'l', 'o', 'e'])
其它操作

# 定义两个集群
>>> s = set([1,2,3,4])
>>> t = set('hello')

# 增加一项
>>> t.add('bb')
>>> t
set(['bb', 'h', 'e', 'l', 'o'])

# 增加多项
>>> s.update([6,7,8])
>>> s
set([1, 2, 3, 4, 6, 7, 8])

# 删除
>>> s.remove(1)
>>> s
set([2, 3, 4, 6, 7, 8])

# 查集合的长度
>>> len(s)
6

# 测试 x 是否是 s 的成员
>>> "x" in s
Flase
# 测试 x 是否不是 s 的成员
>>> "x" not in s
True

# 复制
>>> s.copy()

 

 

二、文件操作

 1. 读

>>> f = open('text.txt', 'r')         # r 表示以只读的方式打开文件,不能写
>>> for line in f:
...     print(line.strip())           # line.strip() 去除多余的回车
... 
aaa 123
bbb 345
ccc 789
ddd 135
eee 246
>>> f.close()                         #关闭文件
>>> f = open('text.txt', 'r')
# read 读取文件内所有的内容,返回是字符串
>>> f.read()
'aaa 123\nbbb 345\nccc 789\nddd 135\neee 246\n'
>>> f.read()                           # 文件的指针已在最末尾,所以读不到文件
''
>>> f.seek(0)                          # 把文件的指针重新指向初初的位置0
# readline 一行一行的读取文件中的内容,每次只读取一行,返回是字符串
>>> f.readline()
'aaa 123\n'
>>> f.readline()
'bbb 345\n'
>>> f.readline()
'ccc 789\n'
>>> f.readline()
'ddd 135\n'
>>> f.readline()
'eee 246\n'
>>> f.readline()
''
>>> f.seek(0)
# readlines 读取文件内所有的内容,返回是列表
>>> f.readlines()
['aaa 123\n', 'bbb 345\n', 'ccc 789\n', 'ddd 135\n', 'eee 246\n']
>>> f.close()                            #关闭文件 

 2. 写

# w表示写,但是使用时,会先清空文件里之前的内容,若是不存在刚创建
>>> f = open('test.txt', 'w')
>>> f.write('Hello,world!!!')
>>>f = open('test.txt', 'r')
>>>for line in f:
...          print(line)
...
Hello,world!!!
>>> f.close()                            #关闭文件

 3. 追加(写)

# a 表示追加,即用此种文件打开,只会在文件最后写入,不会清空文件的内容
>>> f = open('test.txt', 'a')
>>> f.write('Second Hello!!')
>>> f = open('test.txt', 'r')
>>> for line in f:
...     print(line)
... 
Hello,world!!!Second Hello!!
>>> f.close()          #关闭文件
#已在最后追加上

 4.  with 语句

   用with语句的好处就是不需要再另外写一行去关闭操作的文件

#打开文件用with避免打开文件忘记关闭
with open('test.txt' 'r') as f:
    pass

# 也可以同时打开多个进程操作
with open('log1', 'r') as obj1, oepn('log2', 'r+') as boj2:
    pass

 关于open模式

w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

 flush  从内存中刷新到磁盘中  

 

三、函数

 1. 函数基本语法及特性

  • 避免使用过多的重复代码,提高效率
  • 方便日后的修改、更新 
# 定义函数
def hello():
    print('Hello,World!')
# 调用函数
hello()  

 2. 函数的参数

# 定义一个函数
def hello(x,y):               # 这里定义的x,y是函数的形参
    print('hello',x,y)

# 位置参数
hello('jace','maker')       # 这里的jace maker是函数的实参
#输出
hello jace maker

#关键参数
hello('jace',y='mac')
#输出
hello jace mac
#注: 关键参数一定不能写在位置参数的左边

 非固定参数

# 定义一个函数
def name(x, y ,*args):        # 这里的*args 表示可以输入大于等于0个参数
    print(x, y, *args)

name('jack', 'macker')
#输出:
jack macker

#传入更多的实参
name('jack', 'macker', 'xiao', 'dajia')
#输出:
jack macker xiao dajia
#如果在输出的时候把args前面的*号去掉,就会把传入的随机参数输出成元组形式
jack macker ('xiao', 'dajia')

###还有**kwargs,这个可以传入字典的格式

def status(name, age, *args, **kwargs):
    print(name, age, args, kwargs) 

status('jace', '22', '123abc', 'ABC', sex='Male', ligin=55)
#输出:
jace 22 ('123abc', 'ABC') {'ligin': 55, 'sex': 'Male'}

 3.局部变量和全局变量

 

 4. 递归

  在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,那这个函数就是递归函数。

def calc(n):
    print(n)
    if int(n/2) == 0:
        return n
    return calc(int(n/2))

calc(10)
输出:
10
5
2
1

 递归特性:

  • 有明确的结束条件
  • 问题规模每递归一次都应该比上一次的问题规模有所减少
  • 效率低

 5. 匿名函数

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

# 再来个一例子,把列表中的偶数加100
l1 = [11,22,33,44,55]
ret = list(map(lambda x: x + 100 if x % 2 == 0 else x, l1))
print(ret)
[11,122,33,144,55]

# abs 相当于取绝对值 
a = -3 
abs(a) 
3

 匿名函数与列表生成一起使用,屌的不行

# 匿名函数与列表生成一起使用

s =  list(map(lambda x: x+100 if x % 2 == 0 else x, [x for x in range(10)]))
print(s)
[100, 1, 102, 3, 104, 5, 106, 7, 108, 9]

  

 6. 返回值

    要想获取函数的执行结果,就可以用return语句把结果返回

   注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None 

 

 

坚持的python开发之路还在继续进行中。。。加油ing。。。共勉--!

posted on 2017-03-02 11:32  奋斗德路  阅读(123)  评论(0)    收藏  举报