Python 学习笔记(二)

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)

    

生成器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值