Python学习笔记5

集合set

tuple算是list和str的杂合(杂交的都有自己的优势,上一节的末后已经显示了),那么set则可以堪称是list和dict的杂合.
set拥有类似dict的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键.
set也有继承了一点list的特点:如可以原处修改

创建set

>>> s1 = set("qiwsir") #把str中的字符拆解开,形成set.特别注意观察:qiwsir中有两个i
>>> s1 #但是在s1中,只有一个i,也就是不能重复
set(['q', 'i', 's', 'r', 'w'])
>>> s2 = set([123,"google","face","book","facebook","book"]) #通过list创建set.不能有重复,元素可以是int/str
>>> s2
set(['facebook', 123, 'google', 'book', 'face']) #元素顺序排列不是按照指定顺序
>>> s3 = {"facebook",123} #通过{}直接创建
>>> s3
set([123, 'facebook'])

更改set

增加元素 set.add()
>>> a_set = {'a','i'}
>>> type(a_set)
<class 'set'>
>>> a_set.add("qiwsir")
>>> a_set
{'i', 'qiwsir', 'a'}
>>> b_set = set("python")
>>> b_set
{'n', 'p', 'h', 'y', 't', 'o'}
>>> b_set.add("qiwsir")
>>> b_set
{'qiwsir', 'n', 'p', 'h', 'y', 't', 'o'}
>>> b_set.add("[1,2,3]")
>>> b_set
{'qiwsir', 'n', 'p', 'h', 'y', 't', '[1,2,3]', 'o'}
从另外一个set中合并过来元素,set.update(s2)
>>> s1
{'r', 'q', 's', 'w', 'i'}
>>> s2
{'face', 'facebook', 123, 'book', 'google'}
>>> s1.update(s2)
>>> s1
{'r', 'q', 'face', 's', 'w', 'facebook', 'google', 'book', 'i', 123}
>>> s2
{'face', 'facebook', 123, 'book', 'google'}
删除

set.pop()是从set中任意选一个元素,删除并将这个值返回.但是,不能指定删除某个元素.
set.remove(obj)中的obj,必须是set中的元素
set.discard(obj)中的obj如果是set中的元素,就删除,如果不是,就什么也不做
set.clear(),它的功能是:Remove all elements from this set

集合的关系

冻结的集合

不能在原处修改的集合

>>> f_set = frozenset("qiwsir") #看这个名字就知道了frozen,冻结的set
>>> f_set
frozenset(['q', 'i', 's', 'r', 'w'])
>>> f_set.add("python") #报错

集合运算

元素与集合的关系

元素是否属于某个集合。

>>> aset
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> "a" in aset
False
>>> "h" in aset
True
集合与集合的纠结

假设两个集合A、B
A是否等于B,即两个集合的元素完全一样

>>> a
(['q', 'i', 's', 'r', 'w'])
>>> b
(['a', 'q', 'i', 'l', 'o'])
>>> a == b
False
>>> a != b
True

A是否是B的子集,或者反过来,B是否是A的超集。即A的元素也都是B的元素,但是B的元素比A的元素数量多。

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> c
set(['q', 'i'])
>>> c<a #c是a的子集
True
>>> c.issubset(a) #或者用这种方法,判断c是否是a的子集
True
>>> a.issuperset(c) #判断a是否是c的超集
True
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a<b #a不是b的子集
False
>>> a.issubset(b) #或者这样做
False

A、B的并集,即A、B所有元素,

>>> a = set("qirsiw")
>>> a
{'r', 'q', 's', 'w', 'i'}
>>> b = set("qialo")
>>> b
{'q', 'l', 'i', 'a', 'o'}
>>> a | b
{'r', 'q', 's', 'w', 'l', 'i', 'a', 'o'}
>>> a.union(b)
{'r', 'q', 's', 'w', 'l', 'i', 'a', 'o'}

A、B的交集,即A、B所公有的元素

>>> a & b
{'i', 'q'}
>>> a.intersection(b)
{'i', 'q'}

A相对B的差(补),即A相对B不同的部分元素

>>> a - b
{'r', 's', 'w'}
>>> a.difference(b)
{'r', 's', 'w'}

A、B的对称差集

>>> a
set(['q', 'i', 's', 'r', 'w'])
>>> b
set(['a', 'q', 'i', 'l', 'o'])
>>> a.symmetric_difference(b)
set(['a', 'l', 'o', 's', 'r', 'w'])

条件语句

if语句

>>> a = 8 
>>> if a==8:
...     print a 
... 
8

if…elif…else

if 条件1:
语句块1
elif 条件2:
语句块2
elif 条件3:
语句块3
else:
语句块4

三元操作符

A=Y if X else Z
如果X为真,那么就执行A=Y。 如果X为假,就执行A=Z。

>>> x = 2 
>>> y = 8 
>>> a = "python" if x > y else "qiwsir" 
>>> a 'qiwsir' 
>>> b = "python" if x < y else "qiwsir" 
>>> b 'python'

for循环

for 循环规则:
操作语句

简单的for循环

>>> hello = "world"
>>> for i in hello: 
        print i 
w 
o
r 
l 
d

使用索引(偏移量)得到序列对象的某个元素

>>> for i in range(len(hello)): ...    
	 print hello[i] 
...
w 
o 
r 
l 
d

range(start,stop[,step])

start:开始数值,默认为0,即如果不写这项,就是认为start=0。 stop:结束的数值,必须要写。 step:变化的步长,默认是1,即若不写则认为步长为1,坚决不能 为0。

>>> range(9)                #stop=9,别的都没有写,含义就是range(0, 9, 1) [0, 1, 2, 3, 4, 5, 6, 7, 8]          #从0开始,步长为1,直到小于9的那个数 >>> range(0, 9) [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> range(0, 9, 1) [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> range(1, 9)             #start=1 [1, 2, 3, 4, 5, 6, 7, 8]
>>> range(0, 9, 2)          #step=2,每个元素等于start+i*step [0, 2, 4, 6, 8]

for的对象

所有的序列类型对象都能够用for来循环

zip()

>>> a = "qiwsir"
>>> b = "github"
>>> zip(a,b)
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]

列表解析

>>> squares = [x**2 for x in range(1,10)] 
>>> squares 
[1, 4, 9, 16, 25, 36, 49, 64, 81]

while循环

break和continue

break的含义就是要在这个地方中断循环,跳出循环体。
而continue则是要从当前位置(即continue所在的位置)跳到循环体 的最后一行的后面(不执行最后一行),对一个循环体来讲,就如同首 尾衔接一样,最后一行的后面是哪里呢?当然是开始了。

while…else

count = 0 
while count < 5:   
print count, " is  less than 5"    count = count + 1 
else:   
print count, " is not less than 5"

文件

打开文件

>>> f = open("130.txt")     #打开已经存在的文件 
>>> for line in f: ...    
       print line ...
learn python
http://qiwsir.github.io
qiwsir@gmail.com

创建文件

>>> nf = open("131.txt", "w") 
>>> nf.write("This is a file")

r 以读方式打开文件,可读取文件信息。
w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容
a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
r+ 以读写方式打开文件,可对文件进行读和写操作。
w+ 消除文件内容,然后以读写方式打开文件。a+ 以读写方式打开文件,并把文件指针移到文件尾。
b 以二进制模式打开文件,而不是以文本模式。该模式只对 Windows 或 Dos 有效,类 Unix 的文件是用二进制模式进行操作的。

用close()来关闭文件,这是很重要 的一步,一定要养成一个习惯,写完内容之后就关闭。

使用with 安全关闭文件

>>> with open("130.txt","a") as f: 
...     f.write("\nThis is about 'with...as...'") ...
>>> with open("130.txt","r") as f: 
...     print f.read() 
.. 
learn python http://qiwsir.github.io qiwsir@gmail.com
hello
This is about 'with...as...'

文件的状态

>>> import os
>>> file_stat = os.stat("131.txt")   #查看这个文件的状态 
>>> file_stat
os.stat_result(st_mode=33206, st_ino=1125899906842733, st_dev=1780801764, st_nlink=1, st_uid=0, st_gid=0, st_size=14, st_atime=1583153606, st_mtime=1583154035, st_ctime=1583153606)
>>> file_stat.st_ctime
1583153606.2835338

查看时间

>> import time
>>> time.localtime(file_stat.st_ctime)
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=2, tm_hour=20, tm_min=53, tm_sec=26, tm_wday=0, tm_yday=62, tm_isdst=0)

read/readline/readlines

read 读取全塞到一个字符串里
readline 一行一行读取 每执行一次读取一行
readlines 行读取 返回一个列表

读很大的文件 fileinput模块

>>> import fileinput 
>>>  for line in fileinput.input("you.md"): 
>>>   print line 

seek()让指针移动

>>> f.seek(0)
回到文件的最开头
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python学习笔记PDF是一种学习Python编程语言的资料形式,它包含了Python的基本语法、数据类型、流程控制、函数、模块、面向对象编程、异常处理等相关内容。以下是关于Python学习笔记PDF的详细内容说明: 1. 基本语法:Python学习笔记PDF中,首先介绍了Python的基本语法,例如如何定义变量、数据类型的使用(包括整数、浮点数、字符串、列表、元组、字典等),以及如何进行算术运算、比较运算和逻辑运算。 2. 流程控制:Python学习笔记PDF中,进一步介绍了流程控制的知识,包括条件判断和循环控制。条件判断主要是通过if语句进行判断执行不同的代码块,而循环控制则通过while循环和for循环来实现重复执行一段代码。 3. 函数:Python学习笔记PDF中,对函数的概念和使用进行了详细的解释。函数是代码的封装和组织方式,通过定义函数可以提高代码的重用性和可读性。学习者将了解到如何定义函数、调用函数、函数参数的传递以及函数返回值的使用。 4. 模块:Python学习笔记PDF中,介绍了Python中的模块和包的概念。模块是一组函数、类或变量的集合,以.py文件的形式存在,可以被其他程序调用和使用。学习者将学习如何导入模块、使用模块中的函数和变量。 5. 面向对象编程:Python学习笔记PDF中,对面向对象编程进行了系统的讲解。面向对象编程是一种以对象为基本单位的编程思想,通过定义类和对象,可以更好地组织和管理代码。学习者将了解如何定义类、创建对象、封装、继承和多态的使用。 6. 异常处理:Python学习笔记PDF中,对异常处理进行了介绍。异常是程序在运行过程中出现的错误,通过捕获和处理异常,可以更好地控制程序的执行流程并提高程序的健壮性。学习者将了解到如何使用try-except语句来捕获和处理异常。 总之,Python学习笔记PDF是一份全面而详细的学习Python编程语言的资料,通过学习该资料,学习者将获得扎实的Python编程基础,并能够运用Python进行简单的程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值