Python全栈Day 12部分知识点

发布时间:2019-03-12 00:39:45编辑:auto阅读(2056)

    可迭代对象:列表、字符串、元组

    列表(list [])的“魔法”

      定义

        列表是一种类,中括号把数据元素(六大数据类型都可以)括起来,用逗号作分割符。  

        有序,元素可被修改。

      特性

        深灰“魔法”

        ——可索引(下标)取值;

        ——可切片,切片结果也是列表;

            li=[1,12,9,'age','alex']  #通过list类创建的对象,li

            li[1:3]=[120,90]

            print(li)

            输出

              [1,120,90,'age','alex']

        ——支持in操作

        ——支持for/while循环

        ——可嵌套

            查找嵌套列表的元素可在[]后再加[]

        ——列表元素可以被修改

            li[1]=2

            li[2]=9

            print(li)

            输出

              [1,2,9,'age','alex']

        ——列表元素可以删除

            ...

            del li[1]

            print(li)

            输出

              [1,9,'age','alex']

            del li[1:3]

            输出

              [1,'alex']

        ——字符串转列表,用list()

            s='abcd'

            new_s=list(s)

            print(new_s)

            输出

              ['a','b','c','d']

        ——列表转字符串

            '''  li=[11,22,33,'123','alex']  

                r=str(li)

                print(r)  #输出‘[11,22,33,'123','alex']’  '''

          1.既有数字,又有字符串,写for循环依次处理

            for i in li:

              s=s+str(i)

            print(s)

          2.只有字符串,使用join

            li=['123','alex']

            v=''.join(li)

            print(v)

            输出

              123alex

      灰“魔法”——list类中提供的方法

        - append(原来值最后追加,对列表本身进行修改,而非像字符串一样,创建一个新变量添加元素)

        - clear(清空列表,使列表变成[])

        - copy((浅)拷贝)

          li=[11,22,33,44]

          v=li.copy

          print(v)

          输出

            [11,22,33,44]

        - count(计算元素出现的次数)

        - extend(扩展源列表)

           li=[11,22,33,44]

          li.extend([9898,'不得了'])  #相当于执行了for循环

          print(li)

          '''  li.append([9898,'不得了'])  #整体放进去

              print(li)  '''

          '''  li.extend('不得了')

              print(li)  '''

          输出

            [11,22,33,44.9898,‘不得了’]

            '''  [11,22,33,44,[9898,‘不得了’]]  '''

            '''  [11,22,33,44,‘不','得','了’]  '''

        - index(根据值获取当前值索引位置,左边优先)

          li=[11,22,33,44]

          v=li.index(22)

          print(v)

          输出

            1

        - insert(在指定索引位置插入元素)

          li=[11,22,33,44]

          li.insert(0,99)

          print(li)

          输出

            [99,11,22,33,44]

        - pop (删除某个值{默认最后的值},并获取删除的值); - remove(删除列表中的指定值,左边优先)

          li=[11,22,33,44]

          v=li.pop()

          print(v)

          print(li)

          v1=li.pop(1)

          print(v1)

          print(li)

          输出

            44

            [11,22,33]

            22

            [11,33]

          li=[11,22,33,22,44]

          li.remove(22)

          print(li)

          输出

            [11,33,22,44]

    p.s.  删除操作 pop / remove / del li[0] / del li[7:9] / clear

        - reverse(将当前列表进行反转)

          li=[11,22,33,22,44]

          li.reverse()

          print(li)

          输出

            [44,22,33,22,11]

        - sort

          li=[11,44,22,33,22]

          li.sort()

          print(li)

          li.sort(reverse=True)

          print(li)

          输出

            [11,22,22,33,44]

            [44,33,22,22,11]

    p.s. - cmp ; - key 涉及函数,lambda表达式  内置函数sorted 函数处补充

    元组tuple

      圆括号括元素,元素的一级元素不可被修改,不能被增加或者删除。一般写元祖的时候,推荐最后加逗号,不影响元组长度,逗号后面是空的。  有序。

      特性

        ——可索引

          tu=(111,'alex',(11,22),[(33,44)],True,33,44,)

          v=tu[0]

          print(v)

          输出

            111

        ——可切片

          ...

          v=tu[0:2]

          print(v)

          输出

            (111,'alex')

        ——不可修改、增加或删除

        ——可for循环,是可迭代对象

        ——字符串/列表/元组可相互转换

          s='asdfasdf0'

          li=['asdf',1231]

          tu=(123,123,'asdf')

          tu1=('asdf','asdf')

          v=tuple(s)

          print(v)

          v=tuple(li)

          print(v)

          v=list(tu)

          print(v)

          v='_'.join(tu1)

          print(v)

          输出

            ('a','s','d,'f','a','s','d,'f','0')

            ('asdf',1231)

            [123,123,'asdf']

            asdf_asdf

        ——二级或更高级元素可修改

          tu=(111,'alex',(11,22),[(33,44)],True,33,44,)

          tu[3][0]=567

          print(tu)

          输出

            (111,'alex',(11,22),[567],True,33,44,)

      两个方法

        - count 获取指定元素在元组中出现的次数

        - index 获取指定元素在元组中第一次出现的索引值

    字典dict

      字典的value可以是任何值;字典的key不能是布尔值、列表和字典。  字典无序,因为无序所以没有系统生成的索引,通过键来找值。

      info={

        'k1':18,  #键值对

        'k2':True

        'k3’:[

          11,

          [],

          ()

          22,

          33,

          {

            'kk1':'vv1',

            'kk2':'vv2',

            'kk3':(11,22),  #找这里的第一个元素 v=info['k3'][5]['kk3'][0]

          }

        ]

        ‘k4’:(11,22,33,44)

         }

        info1={

          1:'asdf',

          'k1':'asdf',

          True:'123',

          [11,22];123,

          (11,22):123,

          {'k1:v1'}:123,

        }

        print(info1)

        输出

          {'k1':'asdf',1:'123',(11,22):123}

          True 1 False 0 这里True和键1重复了 key重复时只能保留一个

          布尔值、列表和字典(涉及到哈希表)不能作为字典的key,常数、元组可以

          (列表或字典若作为key会报错)

      特性

        ——通过键来找值

        ——不可切片

        ——支持del删除 键值对  del info['k1']  del info['k3'][5]['kk1']

        ——默认for循环输出里面元素,只输出key

            for item in info{.keys}()

          for item in info.values()  输出value

          for k,v in info.items()  输出key和value

        ——while循环不太好用,key不是常规索引

      方法

        - fromkeys

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 v=dict.fromkeys(['k1',123,'999'])
    4 v1=dict.fromkeys(['k1',123,'999'],123)
    5 print(v,v1)

        输出

          {'k1': None, 123: None, '999': None} {'k1': 123, 123: 123, '999': 123}

        - get

    1 ...
    2 dic={'k1':'v1'}
    3 v=dic.get('k1')
    4 print(v)
    5 v=dic.get('kk1')
    6 print(v)
    7 v=dic.get('kk1',111)    #第一个数是想获取的key,
    8 print(v)                #如果不存在结果为第二个值,
    9                         #如果存在则获取其对应value

        输出

          v1

          None

          111

        - pop(如果要删除的键值对不存在,dic.pop(key,default)返回default的值); - popitem(随机删除一个键值对,dic.popitem())

    1 ...
    2 dic={'k1':'v1','k2':'v2'}
    3 v=dic.pop('k1')
    4 print(dic,v)

        输出

          {'k2': 'v2'} v1

        - setdefault(设置值,如果已经存在则不设置,获取当前key对应的value;不存在,设置,获取当前key对应的value)

    1 ...
    2 dic={'k1':'v1','k2':'v2'}
    3 v=dic.setdefault('k1','123')
    4 print(dic,v)
    5 dic={'k1':'v1','k2':'v2'}
    6 v=dic.setdefault('k111','123')
    7 print(dic,v)

        输出

          {'k1': 'v1', 'k2': 'v2'} v1

          {'k1': 'v1', 'k2': 'v2', 'k111': '123'} 123

        - update

    1 ...
    2 dic={'k1':'v1','k2':'v2'}
    3 dic.update({'k1':'111','k3':123})
    4 print(dic)
    #另一种写法:dic.update(k1=123,k3=345,k5='asdf')
      输出{'k1': 123, 'k5':'asdf','k2': 'v2', 'k3': 345}

        输出

          {'k1': '111', 'k2': 'v2', 'k3': 123}

    整理

      一、数字

        int()

      二、字符串

        replace / find / join / strip / startswith / split / upper / lower / format

        **kwargs 代表 可以传 key=value 或者 传字典 **{}

    1 ...
    2 template='I am {name},age:{age}'
    3 v=template.format(name='alex',age=19)
    4 #v=template.format(**{'name':'alex','age':19})  和上面的一样效果
    5 print(v)

        输出

          I am alex,age:19

      三、列表

        append / extend / insert

        索引、切片、循环

      四、元组

        忽略

        索引、切片、循环  以及元素不能被修改

      五、字典

        get / update / keys / values / items

        for,索引

        列表元组字符串字典可做in操作

     

    1 ...
    2 dic={'k1':'v1','k2':'v2'}
    3 v='k1' in dic
    4 print(v)

     

        输出

          True

     

      六、布尔值

        本身内存里就是0或1

        bool(...)

     

        None '' 0 {} [] () 都是假的

          

关键字