Python 小栈_04:Python的集合和函数变量

今日学习集合、常用的格式化、函数初识

一、集合

# 1、由不同元素组成,无序,且元素必须为不可改变的类型(字符串、数字、元祖)
s1 = {1,2,3,4}
s2 = {2,3,4}
# 2、set把字符串、数字和元祖改为集合(可变的);froezenset表示变为不可变集合
# (1)字符串
# v1=set("hello")
# print(v1) 把字符串中的每一个字符按for循环一一导入集合中,重复则舍去
# (2)数字、元祖
# v2=set((1,(2,4,5),3,4,5,))
# print(v2)
# (3)数字
# s=(1,2,3,5)
# v=set(s)
# print(v)
# (4)frozenset变为不可变集合
# s=frozenset("hello")
# print(s)
# 3、add添加元素,一次只能加一次
# s1.add(8)
# print(s1)
# 4、copy拷贝
# s=s1.copy()
# print(s)
# 5、clear清空
# s1.clear()
# print(s1)
# 6、pop、remove、discard删除,都只可以删除1个
# s1.pop() -->随机删除
# s1.remove(1) -->指定删除,不存在时会报错
# print(s1)
# s1.discard(9) -->指定删除,不存在时不会报错
# print(s1)
# 7、交集
# print(s1&s2)
# print(s1.intersection(s2))
# 8、并集
# print(s1|s2)
# print(s1.union(s2))
# 9、差集
# print(s1-s2)
# print(s1.difference(s2))
# 10、交叉补集
# print(s1^s2)
# print(s1.symmetric_difference(s2))
# 11、difference_update剪完后更新原集合
# s1.difference_update(s2)
# print(s1)
# 12、intersection_update交集完后更新原集合
# s1.intersection_update(s2)
# print(s1)
# 13、isdisjoint用来判断是否有交集,默认为无交集,空集。所以有交集为False,无交集为True
# print(set.isdisjoint(s1,s2))
# 14、update可以用来更新值,且可以多个,add只能增一个
# s1.update((1,(1,5),3,"alex",4))
# print(s1)
# print(s1.issubset(s2)) -->判断s1是否为s2的子集
# print(s1.issuperset(s2)) --》判断s1是否为s2的父集

二、 常用格式化

# 1、%s万能的,可添加任意形式的数据类型。
# mgs="i am %s my hobby is %s" % ("ales","[1,2,3]")
# print(mgs)
# 2、%d只可以用来拼接整型
# mgs="i am %s my hobby is %d" % ("alex",1)
# print(mgs)
# 3、%f用来打印浮点数,在%加.数字即可规定保留几位小数,且是四舍五入的
# mgs="percentage %.2f"% 98.354656745
# print(mgs)
# 4、%%用来打印百分比
# mgs="percentage %.2f %%" % 98.354656745
# print(mgs)

总结:
(一)百分号方式:

# %[(name)][flags][width].[precision]typecode
# name的作用是用于指定的key,后面用字典的形式一一对应拼接
# mgs = 'i am %(name)s age %(age)d ' % {"name":"alex","age":19}
# print(mgs)
# 加颜色:033[45:1m]......\033
# mgs = 'i am \033[45:1m%(name)+1s\033 age %(age)d ' % {"name":"alex","age":19}
# print(mgs)

(二)format方式 取值{}
# [[fill]align][sign][#][0][width][,][.precision][type]

# 1、用元祖取值,一一对应
# tpl = "i am {} age {}".format("alex",19)
# print(tpl)
# 若{}没有加索引,则必须一一对应,没有则报错
# 若{}有加索引,则相当于从format中调取索引对应的元素
# 2、用字典取(两种方式)
# tpl="i am {name} age {age}".format(name="aex",age=19)
# print(tpl)
# 若要用字典传,则加**
# tpl="i am {name} age {age}".format(**{"name":"aex","age":9})

# print(tpl)
# 3、用列表取,可以多个,用索引指定位置
# tpl="i am {0[0]} age {0[2]}".format([1,2,3,4],[4,5,6,8])
# print(tpl)
# 若要用列表传,则加*
# tpl="i am {0}".format(*["seven",2])
# print(tpl)

# :b 二进制 :o 八进制 :x 十六进制(小写)
# :X 十六进制(大写) :d 整型 :s 任意数据类型
# :f 浮点数 :% 显示成百分比,且默认小数点后六位

三、函数

1、基本结构
def 函数名(参数):  
      ...
    ...
    函数体
    ...
    返回值

      函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。
    2、函数功能
(1)代码重用
(2)保持一致性,易维护
(3)可拓展性
 
     3、参数

def text (x,y):
    sec=x**y
    return sec
t=text(4,2print(t)

(1)形参  -->x,y

         实参 -->4,2

(2)位置参数和关键词参数

1.标准调用:形参与实参需一一对应,且缺一、多一都不行

2.关键词调用:位置元素固定,且缺一、多一都不行

def text (x,y,z):
    print(x)
    print(y)
    print(z)
text(1,2,3)


def text (x,y,z):
    print(x)
    print(y)
    print(z)
text(x=1,y=2,z=3)


def text (x,y,z):
    print(x)
    print(y)
    print(z)
  handle x,y,z text(
1,y=2,z=3)

PS:若两者混用,则位置参数需在关键词参数的左边。

PPS:一个参数不能赋予两个值

(3)默认参数

def handle(x,type="happy"):
    print(x)
    print(type)
    return x,type
handle(2,3)
>>>   2   3

type为默认参数,不输值时则输出默认值

(4)参数组
*列表 **字典
*argc 插入列表参数 **kwargc 插入字典参数
def handle(x,*argc,**kwargc):
    print(x)
    print(argc)
    print(kwargc)
    return
handle(2,3,4,5,6,7,7,y=3,z=9)
>>>
2

(3, 4, 5, 6, 7, 7)

       {'y': 3, 'z': 9}

def handle(x,*argc,**kwargc):
    print(x)
    print(argc)
    print(kwargc)
    return
handle(2,[3,4,5,6,7,7],y=3,z=9)
>>>     
2
([3, 4, 5, 6, 7, 7],) {'y': 3, 'z': 9}

----------------------------------------
def handle(x,*argc,**kwargc):
print(x)
print(argc)
print(kwargc)
return
handle(2,*[3,4,5,6,7,7],y=3,z=9)
>>>

2

       (3, 4, 5, 6, 7, 7)
       {'y': 3, 'z': 9}

PS:在调用函数时,(x,*argc)根据位置参数的形式调用,**kwargc根据关键词参数的形式调用

        在(x,*argc)中,若第二个实参为没有加*的列表,则把整个列表当成一个元素赋值给*argc:若为有加*的列表,则把列表中的每一个元素一一赋值给*argc

PPS:在多个用时,先写*argc,再写**kwargc

PPPS:过程为没有return的函数。过程本身也是函数,在执行时输出为none。

             return可返回多个值,放在一个元祖里;只要碰到return,则整个函数就结束掉了。

 

以上。

 
posted @ 2020-03-09 15:28  七七)  阅读(256)  评论(0)    收藏  举报