Python笔记(二)
集合
-
Python中的集合(set)是无序的不重复元素序列,可以用来去重
-
可以用花括号或者set()函数来创建集合
-
创建一个集合必须用set()而不是{},因为{}被默认用来创建一个空字典
集合的基本操作
#创建集合
import os
set1={'a','a','b','c'}
print(set1) #自动去重了
set2=set('a')
print(set2)
#集合间的运算
a=set('fsafagwewfdfdsg')
b=set('fdshjjerty')
#筛选集合a包含,集合b不包含的元素
print(a-b)
#集合a或集合b中包含的所有元素(并集)
print(a|b)
#集合a和b都包含的元素(交集)
print(a&b)
#不同时包含于ab的元素
print(a^b)
#集合的基本操作
#添加元素 set.add(x) 参数只能一个,并且得是元素,如果元素已经存在,则不进行任何操作
set1.add('x')
print(set1)
#set.update( )可以添加元素,且参数可以是列表,元祖,字典等等
list=[1,2,3,4]
set1.update(list)
print(set1) #print(set1)
#移除元素set.remove(x)
set1.remove(1) #将1从set1集合中去除,不能填入多个参数
print(set1)
#set.discard(x)方法,移除集合中的元素,如果元素在其中不存在,不会发送报错
set1.discard(1)
print(set1)
#set.pop() 删除集合中的一个元素,规则:
#集合中的元素都是数字时,删除最小的数字,剩余数字升序排列
#如果集合中的元素是非数字,随机删除一个,随机排列
#集合中既有数字和非数字时,删除时:
#随机选一个,删除的如果是数字,一定先选择最小的数字,数字会升序排列,其他随机排列
#随机选一个,删除的如果是非数字,随机删除一个元素,数字升序排列,非数字随机排列
set2={1,2,3}
print(set2.pop())
print(set2)
#计算集合中的元素个数 len(set)
print(len(set1))
#清空集合 set.clear()
#判断元素在集合中是否存在 x in set
print(3 in set2) #True
print((4 in set2)) #False
集合的内置方法
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
流程控制
if语句
-
python中的if语句使用 if-else-elif,elif代替了else if
-
每个条件后面要用冒号:,表示接下来是满足条件后要执行的语句块
-
使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
-
在Python中没有switch-case语句
#流程控制
#if语句示例
#python中的if语句使用 if-else-elif,elif代替了else if
a=1
b=2
if a+b!=3:
print(a+b)
else:
print(a)
if a==1:
print(a)
elif b==2:
print(b)
if a: #ture
print(b)
条件中写任意变量,默认为True
if嵌套同理,不赘述了
循环语句
while循环
- python中没有do…while循环
#while循环
#打印1-10
a=1
while a<=10:
print(a)
a+=1
- python的while可以使用else
#while else示例
#打印1-10,循环结束时打印结束
a=1
while a<=10:
print(a)
a+=1
else:
print('循环结束')
for循环
- python中的for循环是用于遍历系列元素的,类似于java的foreach
语法:
for <variable> in <sequence>:
<statements>
else:
<statements>
示例:
#for循环
a=[1,2,3,4,5]
for x in a :
print(x)
b={1:'a',2:'b',3:'c',4:'d'}
for x in b: #字典默认遍历的是键值
print(x)
for x in b.items():
print(x) #返回键值对
用range()方法生成数列并遍历:
#遍历数列 range()函数可以生成数列,内有至多三个参数,分别是开始与结束的区间,还有增量
a=range(10)
print(a)
for x in a:
print(x)
b=range(5,9)
for x in b :
print(x)
print(b)
c=range(0,10,2)
for x in c:
print(x)
print(c)
循环语句中的break和continue
在while和for的循环语句中都可以用break和continue作特殊的循环控制
- break语句可以跳出for和while的循环体。如果你从for或者while循环中终止,任何对应的循环else块将不执行
- continue语句被用来告诉Python跳过当前循环块的剩余语句,然后进行下一轮循环
pass语句
python中的pass是空语句,是为了保持程序结构的完整性
pass不做任何事情 只作占位语句
pass在程序中不同于注释的是,它会执行,但不会有任何效果
迭代器
-
python中的迭代器是访问集合元素的一种方式
-
迭代器是一个可以记住遍历的位置的对象
-
迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退
-
迭代器有两个基本方法:iter()和next()
-
字符串,列表或者元组对象都可用于创建迭代器
#迭代器
import sys
list=[1,2,3,4]
it=iter(list) #创建迭代器对象
print(next(it)) #返回迭代器的下一个元素
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
#迭代器
import sys
list=[1,2,3,4]
it=iter(list) #创建迭代器对象
print(next(it)) #返回迭代器的下一个元素
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
#创建一个迭代器
class Numbers:
def __iter__(self):
self.a=1 #初始化类变量a的值为1
return self
def __next__(self):
x=self.a
self.a+=1
return x
#创建对象
myclass=Numbers
myiter=iter(myclass)
#StopIteration 异常处理
#StopIteration异常用于标识迭代的完成,防止出现无限循环的情况
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
生成器
略