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

继续Python三之基础

时间:2016-08-11 09:53:54      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

前言

总想在前面写点啥,来记录记录学习的过程,不得不承认,Python确实不好学,但是,不是学不会,我深信这个道理。所以,我会坚持下去。

具体内容

上次回顾:

1、列表操作可以增删改查,元祖是只读列表,元祖和列表都是有序的。

2、字符串是不能修改的。

比如把字符串变成大写是对整个字符串进行更新,等于说生产一个新的数据。而列表是在原来的位置上进行修改了。

3、列表可以嵌套任何东西。

4、字典的特性:无序的(因为通过key来找值,不需要通过小标来找,底层通过hash算法来找),可以嵌套很多层。

 

一、集合

最简单的用法就是去重,关系测试。

1、去重 set

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)

print(list_1,type(list_1))

输出结果

{1, 3, 4, 5, 6, 7, 9} <class set>

说明:

这个就是一个集合,有点像字典,但是不是,它是无序的。

 

2、交叉 intersection,交集

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)

list_2 = set([2,6,0,66,22,8,4])
#我加了一个list_2,与list_1有交叉内容,这个时候我想取他们的交集

#print(list_1,list_2)

print(list_1.intersection(list_2))

输出结果

{4, 6}

 

3、并集 union

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)

list_2 = set([2,6,0,66,22,8,4])
#并集
print(list_1.union(list_2))

输出结果

{0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}

 

4、差集 difference

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)
list_2 = set([2,6,0,66,22,8,4])
#差集,list_1里面有的list_2里没有的
print(list_1.difference(list_2))

输出结果
{1, 3, 5, 9, 7}

5、子集issubset


list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)
list_2 = set([2,6,0,66,22,8,4])

#子集 print(list_1.issubset(list_2))

输出结果
False

 6、父集 issuperset


list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)
list_2 = set([2,6,0,66,22,8,4])
#父集 print(list_1.issuperset(list_2))
输出结果
False

7、反向差集


list_1 = [1,4,5,7,3,6,7,9]
#上面有重复数据,我把列表去重,就变成一个集合
list_1 = set(list_1)
list_2 = set([2,6,0,66,22,8,4])

#反向差集 print(list_1.symmetric_difference(list_2))
打印结果
{0, 1, 2, 66, 3, 5, 7, 8, 9, 22}

二、文件操作

打印文件

首先我新建一个文件,是一个优秀的散文

技术分享
你若感动,我愿成风
当爱已流逝,就任其随风吧
雨中的眼泪
丁香花开
落幕的季节
祭我们失去的爱情
风的等待
那时,你亦不再年轻
假如爱有天意
青涩之爱
红色康乃馨
驻足你的世界
View Code

我打开它,并打印它,需要注意,要指定用什么格式来打开它

技术分享
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie


data = open("yesterday",encoding="utf-8").read()

print(data)
View Code

具体步骤:

打开的文件赋予对象,再对对象进行操作。

技术分享
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

#文件句柄
f = open("yesterday",encoding="utf-8")
data = f.read()
data2 = f.read()
print(data)
print(===data2====)

打印结果:
你若感动,我愿成风
当爱已流逝,就任其随风吧
雨中的眼泪
丁香花开
落幕的季节
祭我们失去的爱情
风的等待
那时,你亦不再年轻
假如爱有天意
青涩之爱
红色康乃馨
驻足你的世界
===data2====
View Code

这里我做一个小改动,如下:

技术分享
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

#文件句柄
f = open("yesterday",encoding="utf-8")
data = f.read()
data2 = f.read()
print(data)
print(===data2====%s=== %data2)
打印结果
你若感动,我愿成风
当爱已流逝,就任其随风吧
雨中的眼泪
丁香花开
落幕的季节
祭我们失去的爱情
风的等待
那时,你亦不再年轻
假如爱有天意
青涩之爱
红色康乃馨
驻足你的世界
===data2=======

说明:这个时候为啥最后面的data2没有读出来呢?
因为在一开始的读的过程中 ,它是从上往下读,读到了结尾,光标就已经在最下面了,这个时候你在调用这个变量data2,它相当于接着从光标位置往下读,所以就没有,这个时候呢,需要做的就是把光标移上去。
View Code

需要说明:

w模式是可以新建一个文件的。

写文件,例如:

技术分享
# -*- coding: utf-8 -*-
#Author: Leon xie
#文件句柄
f = open("yesterday",w,encoding="utf-8")
#我往里面写句话
f.write("我是大肌霸,\n")
f.write("我爱北京天安门")
输出结果

它会把以前的文本冲刷掉,然后再生成新的内容
我是大肌霸,
我爱北京天安门
View Code

小结:

r  : 只读模式

w : 只写模式,它会冲掉原来文本,然后重新写入

a : 追加,能写,但是不能读。

 

循环文件,第十行打印

f = open("yesterday",r,encoding="utf-8")

for index,line in enumerate(f.readlines()):

    if index == 9 :
        print("===fengefu==")
        continue
    print(line.strip())

说明:
利用下标来判断是第几行

还有一种简单写法,上面可以忽略了

f = open("yesterday",r,encoding="utf-8")
count = 0
for line in f:
    if count == 9:
        print("==我是分割线==")
        count +=1
        continue
    print(line)
    count +=1

三、高阶函数

举例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

#最普通的函数
def add(a,b,f):
    return f(a)+f(b)
#f(abs) 传进去,abs是个函数取绝对值,会拿这个函数去处理这2个数。就是3+6了


res = add(3,-6,abs)
print(res)

输出结果
9

 

四、小结

1、文件处理修改,只能读到内存或者创建一个新的文件

2、函数的定义,调用,位置参数,关键参数,默认参数,参数组

3、元祖和字典

4、全局变量

5、字符编码

 

继续Python三之基础

标签:

原文地址:http://www.cnblogs.com/jixuege-1/p/5746152.html

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