Day 4-集合、百分号拼接及函数

1.数据类型和变量总结

(1)五大基本数据类型:字符串 数字 列表 元组 字典

按元素可变不可变可分为:

      可变:列表、字典

      不可变:字符串、数字、元组

按访问顺序:

1.直接访问:数组

2.顺序访问:字符串、列表、元组

3.映射访问:字典(无序,但查询速度比较快,但占内存高,因为内部维护字典的映射关系)

按存放元素个数:

容器类型(可存放多个值):列表、元组、字典

原子:数字、字符串

2.集合(由不同元素组成(会去重复值),集合中是一组无序排列的可hash值,既不可变类型(数字、字符串、元组),可以作为字典的key)

定义字典 s={1,2,3,4,5} 或者 s=set(‘hello’) 输出时为: h l o e 无序的,内部做了一次for循环

s=set([‘alex’, ’alex’, ‘sb’])

print(s) 输出值为{‘alex’,’sb’}

3.集合内置功能

(1)add(添加)  s.add(‘sb’)

(2)clear(清空)

(3)copy(拷贝一份)  v=s.copy()

(4)pop(随机删除) s.pop()

(5)remove(指定删除)  s.remove(‘sb’) 若没有这个元素 就会报错

(6)discard(指定删除) s.discard(‘ssss’) 若没有这个元素,不会报错

4.集合关系运算

      1.   求交集

           a={1,2,4,5,8}

           b={2,3,4}

           print(a.intersection(b)) 或者 print(a&b)

      2.求并集

           a={1,2,4,5,8}

           b={2,3,4}

           print(a.union(b)) 或者 print(a|b)

      3.求差集

           a={1,2,4,5,8}

           b={2,3,4}

           print(a.difference(b)) a有b没有的 print(a-b)

      4.交叉补集

           Print(a.symmetric_difference(b)) 或者 print(a^b)

           双方除去交集

      5.difference.update() 把a-b的差集赋值给a

      Intersection.update() 把交集赋值给a

      6.isdisjoint() 若两个集合交集为空,则返回True print(a.isdisjoint(b))

      7.issubset() print(a.issubset(b)) 判断a是不是b的子集 True   

           Issuperset() 判断是否是父集

      8.update() a.update(b) 更新多个值 把b有a没有的加入给a

      9.集合是可变类型

      如要不可变,有另一种设置方法 s=frozenset(‘hello’)

      10.简单去重

           a={1,2,3,2}

           s=set(a)

           print(s)

           a=list(s) 

           a=list(set(a))

5.字符串格式化

      字符串拼接

      a=’I am %s ,I am from %s’ % (’chris’, ‘Shenzhen’) %s表示拼接一个字符串类型,万能,其他值的类型也可传输。%d 只能用来传输数字,最好对应,可读性较强

6,.打印浮点数(既小叔)

      a=’percent is %.2f’ %99.2345

print(a) 

.2表示保留两位小数 会四舍五入 基础为%f

7.打印百分比

      a=’sgag %.2f %%’ 两个百分号

8.传输字典

      a=’I am %(name)s %(age)d ’ %{‘name’:’chris,’age’:21}

9.百分号方式

 - 左对齐

 + 右对齐

例子:a=’I am %-20s’ 左对齐缩进20个位置

      如要加颜色: a=’I am \033[43;1m %-20s \033[0m’

10. format 字符串格式化

      a=’I am {},age{}’.format(‘chris’,21) 这要一一对应,不可少

      或者a=’I am {1},age{0}’.format(‘chris’,21) 此时值相反

或者字典的方式

      a=’I am {name},age{age}’.format(name=‘chris’,age=21)

      字典类型时:等同于a=’I am {name},age{age}’.format(**{name:‘chris’,age:21})

      a=’I am {:s},age{:d}, d{:f}’.format( ‘chris’,21,99.6)

列表形式传输值时

a=’I am {:s},age{:d}.format(*[‘chris’,21])

11.定义函数(返回值可以是多个,以元组来承载)

def test(函数名) (x):

      ‘’‘’注释

      X+=1 指代码块或程序处理逻辑

      Return X

使用:

      def test(x):

      ‘’

      y=2*x+1

      return y

a=test(3)

print(a) 此时输出结果就为7

11.定义一个过程

      过程就是不包含返回值

12.函数参数  形参 实参

      def test(x,y):  此时X Y就为形参 不占内存

           a=x**y

           return a

      b=test(2,3)此时2,3就是实参  也称位置参数 与X Y一一对应

      关键字参数 b=test(y=3,x=2) 此时XY就是关键字参数 无需一一对应 缺一不行多一不行

      如果混合使用,位置参数必须在关键字参数左边

13.默认参数

      def sql(x,y=’chris’):  此时y为默认参数,可以后期覆盖

           print(x)

           print(y)

      sql(26,y=’joe’)

14.参数组 **字典(**kwargs) *列表(*args) 增加了可扩展性 可以不传值

  def test(x,*a):
    print(x)
    print(a)
test('采集',2,453,54,{‘sfsag’:’sfg’})

若要传列表,且以原形式输出, 则需加*  test(8,*[‘a’,’d’,’c’])

若要传多个值,以字典形式,可以用索引

def test(x,**kwargs):
    print(x)
    print(kwargs,kwargs[z])
test('采集',y=2,z=453,t=54) 记住一个参数不能传两个值

此时输出值为:

采集

{'y': 2, 'z': 453, 't': 54} 

混合使用时:

      Def test(x,*args,**kwargs) 顺序必须是这样,应为args接收的是位置参数 test(2,214,213,44,name=’fsf’,ss=’asggg’)

           也可以这种方式 test(1,*[2,3,1],**{‘a’:2}

posted @ 2020-02-01 11:08  五号世界  阅读(225)  评论(0编辑  收藏  举报