python基础4-集合/函数

  • 列表list/元组tuple/字典dict-作业

  • print("aaa", sep = "搞", end=""),print("bbb"),输出的aaa和bbb处于同一行,且用搞分割
  • li = ['alex', 'eric',123],li[2]= str(li[2]),v = "_".join(li),先将123转换为字符串,然后再拼接起来。或者写个for循环,将每个元素转换为字符串再拼接
  • enumerate(sequence, [start=0]),seq是任意可迭代对象,如列表,元组,字符串,start是下标开始标号,默认为0

  • 定义变量的根本目的是记录状态的变化

  • name = 'sb',name = ‘alex’,id(name)可以取得name所存数据在内存中的地址编号
  • 不可变类型,重新给变量赋值,必须新开辟地址:字符串,数字,元组
  • 可变类型,重新给变量赋值,id地址不变:列表,字典
  • 顺序访问:字符串,列表,元组
  • 映射访问:字典无序
  • 直接访问:数字
  • 容器类型:列表,元组,字典
  • 原子类型:字符串,数字
  • 集合

  • 不同元素组成,集合无序,元素必须是不可变类型,s = {1,2,3,4,5}
  • 另一种定义方式s= set('hello'),s中包括('o','h','l','s')
  • s.clear(),清空集合
  • s1 = s.copy()
  • s.pop(),随机删除集合中元素
  • s.remove(''sb),删除集合中的元素'sb',不存在会报错
  • s.discard('sbbb'),删除不存在的元素时不报错
  • 交集,p_s.intersection(l_s),等价于p_s&l_s,求ps和ls的交集
  • 并集,p_s.union(l_s),等价于p_s|l_s,求ps和ls的并集
  • 差集,p_s.difference(l_s),等价于p_s -l_s,求得ps中有,ls没有的元素
  • 交叉补集,并集-交集。p_s.symmetric_difference(l_s),等价于p_s^l_s
  • p_s.difference_update(l_s),等价于p_s = p_s-l_s,即将差集更新为ps
  • s1.isdisjoint.(s2),如果集合s1和s2无交集,则返回true
  • s1.issubset(s2),如果s1是s2的子集,则返回true
  • s1.update(s2),将s1更新为s2一致,update()的括号中必须是可迭代对象,如元组,列表,字典,字符串。用于一次新增多个元素
  • 集合是可变的。但是frozenset()是定义不可变集合。
  • 简单去重方法,列表转换为集合,s = set(names),然后集合转换为列表names  = list(s),得到无序的去重列表
  • 字符串格式化

  • msg='i am %s my hobby is %s' %('1hf','alex'),将后两个数据传给前两个%s
  • %s,后边可以接数字,可以接列表。
  • s = 'percent %.4s'%'abscdsf'#取前4位
  • 在该写%d的位置,写%s,会导致程序可读性变差
  • 打印浮点数,percent %.2f %%。打印至小数点后两位,并显示一个%
  • 在python中,单引号和双引号没有区别
  • tp1 = i am %(name)s age %(age)d %{'name':'alex', ' age':'18'},将字典的value赋值给对应的key
  • msg = 'i am %(name) -60s my hobby is alex' %{'name':'1hf'}
    print(msg)
    #flags,取60位并左对齐。+是右对齐
  • msg = 'i am \033[45;1m%(name)+60s\033[0m my hobby is alex'%{'name':'1hf'}
    print(msg)
    #打印时有颜色
  • print('root','x','0','0',sep=':'),用:将几部分连接起来
  • format字符串格式化

  • tp1 = "i am {2}, age {1}, {0}".format("seven",18,'alex'),将format后的值按照012的顺序分别传给前边
  • tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
    tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
    **代表取字典的内容
  • tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
    tpl = "i am {:s}, age {:d}".format(*["seven", 18])
    *相当于取列表的内容
  • tp1 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(15, 15, 15, 15, 15, 15.87623, 2)
    b是二进制,o是八进制,d是整数,xX是小写大写十六进制,%是显示成百分比 
  • 函数

  • 函数定义时不需要形参,在调用时就不要给实参,否则报错
  • print(test),打印出函数test的地址
  • 如果定义了两个重名的函数,则后一个自动覆盖前一个,即调用后一个函数
  • 过程就是没有返回值的函数。python中没有过程,即不定义返回值的情况下,python会返回None
  • 函数返回值如果>1,返回tuple
  • 位置参数,即实参与形参一一对应,缺一或多一不行
  • 关键字参数,位置无顺序,找对应的关键字形参赋值,缺一或多一不行
  • 位置参数一定要在关键字参数的左边,以下OK
    def test(x,y,z):
        print(x)
        print(y)
        print(z)
    test(1,z=2,y=4)

     

  • 默认参数,如果实参不传值,则默认
  • **跟字典有关系,*跟列表/元组有关系。没有加*,代表将一个整体传给函数的*args。如果加*,则遍历列表,将其挨个传入函数
  • *args传位置参数,返回一个元组。**kwargs传关键字参数,返回字典
  • def test(x,*args,**kwargs):符合大原则,位置参数必须在关键字参数的左边。能接受任意形式的参数
posted @ 2022-01-07 22:39  线索  阅读(55)  评论(0编辑  收藏  举报