zoukankan      html  css  js  c++  java
  • 9、基础类型之列表、元组、字典

    一、列表类型

    1.1、定义:存储同种属性多个值

    1.2、定义:l=[1,1.2,'a']

    1.3、类型转换:

    凡是能够被for循环遍历的类型都可以当做参数传给list()转换成列表:

    res=list('hello')
    print(res)
    res=list({'k1':111,'k2':222,'k3':3333})
    print(res)

    1.4、内置方法  (重要)

    1.4.1、按照索引存取值(正向存取+反向存取):既可以取也可以改

    l=[111,'egon','hello']
    正向取
    print(l[0])
    反向取
    print(l[-1])
    可以取也可以改:索引存在则修改对应的值
    l[0]=222
    print(l)
    无论是取值操作还是赋值操作:索引不存在则报错
    l[3]=333

    1.4.2、切片  [  ]

    l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]]
    print(l[0:5:2]) # 0 2 4
    print(l[0:len(l)])
    new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy

    1.4.3、长度   len

    print(len([1, 2, 3]))

    1.4.4、成员运算in 和not in

    print('aaa' in ['aaa', 1, 2])
    print(1 in ['aaa', 1, 2])

    1.4.5、往列表里面添加值

    1.4.5.1、后面追加  append

    l=[111,'egon','hello']
    l.append(3333)
    l.append(4444)
    print(l)

    1.4.5.2、按位置插入值  insert

    l=[111,'egon','hello']
    l.insert(0,'alex')
    print(l)

    1.4.5.3、添加字符或者字符串   extend

    new_l=[1,2,3]
    l=[111,'egon','hello']
    l.extend(new_l)
    l.extend('abc')
    print(l)

    1.4.6、删除

    1.4.6.1、单纯的删除没有返回值    del

    l = [111, 'egon', 'hello']
    del l[1]
    x =del l[1] # 抛出异常,不支持赋值语法
    print(l)

    1.4.6.2、 根据索引删除,会返回删除的值   pop 

    l = [111, 'egon', 'hello']
    l.pop() # 不指定索引默认删除最后一个
    l.pop()
    print(l)

    1.4.6.3、根据元素删除值,remove

    l = [111, 'egon', [1,2,3],'hello']
    l.remove([1,2,3])
    print(l)
    res=l.remove('egon')
    print(res) # None

    1.5、需要掌握的内置方法   

    1.5.1、计数 count

    l = [1, 'aaa', 'bbb','aaa','aaa']
    1、l.count()
    print(l.count('aaa'))

    1.5.2、寻找  找不到报错,找到回复1     index

    l = [1, 'aaa', 'bbb','aaa','aaa']
    print(l.index('aaa'))
    print(l.index('aaaaaaaaa')) # 找不到报错

    1.5.3、清除   clear

    l = [1, 'aaa', 'bbb','aaa','aaa']
    l.clear()
    print(l)

     1.5.4、顺序翻转  reverse

    l = [1, 'egon','alex','lxx']l.reverse()print(l)

    1.5.5、 升序和降序 (同种类型)    sort  

    l=[11,-3,9,2,3.1]
    l.sort() # 默认从小到大排,称之为升序
    l.sort(reverse=True) # 从大到小排,设置为降序
    print(l)

    1.5.6、队列,先进先出  FIFO

    l=[]
    # 入队操作
    l.append('first')
    l.append('second')
    l.append('third')
    
    print(l)
    # 出队操作
    print(l.pop(0))
    print(l.pop(0))
    print(l.pop(0))

    1.5.7、堆栈,后进先出  LIFO

    l.append('first')
    l.append('second')
    l.append('third')
    
    print(l)
    # 出队操作
    print(l.pop())
    print(l.pop())
    print(l.pop())

    二、元组

    2.1、定义

      一个不可变的列表,是不可变类型。

    2.2、作用

      按照索引存放多个值,只能用来读写。

    2.3、定义

      在括号用逗号分隔多个任意属性的元素

    t=(1,1.3,'aa') # t=tuple((1,1.3,'aa'))
    print(t,type(t))

    2.4、类型转换

    # print(tuple('hello'))
    # print(tuple([1,2,3]))
    # print(tuple({'a1':111,'a2':333}))

    2.6、内置方法(重要)

    2.6.1、按照索引取值,不能改

    t=('aa','bbb','cc')
    print(t[0])
    print(t[-1])

    2.6.2、切片

    t=('aa','bbb','cc','dd','eee')print(t[0:3])print(t[::-1])

    2.6.3、长度   len

    t=('aa','bbb','cc','dd','eee')print(len(t))

    2.6.4、成员运算   in

    print('aa' in t)

    2.6.5、寻找 index

    t=(2,3,111,111,111,111)
    print(t.index(111))

    2.6.6、计数  count

    t=(2,3,111,111,111,111)
    print(t.count(111))

    三、字典

    3.1、定义:在大括号内用逗号分隔多个key:value,key属于不可变类型,且不可重复,否则使用最后一个值,value是可变类型。

    3.2、造字典

    3.2.1、方法一    大括号里面带着key和value

    d={'k1':111,(1,2,3):222} # d=dict(...)
    print(d['k1'])
    print(d[(1,2,3)])
    print(type(d))
    d={} # 默认定义出来的是空字典
    print(d,type(d))

    3.2.2、方法二   使用dict改变等号

    d=dict(x=1,y=2,z=3)
    print(d,type(d))

    3.2.3、方法三、通过特殊表达方式:两两对应的列表进行更改

    info=[
        ['name','egon'],
        ('age',18),
        ['gender','male']
    res=dict(info) # 一行代码搞定上述for循环的工作
    print(res)

    3.2.4、快速初始化一个空字典{},往字典里面填key

    keys=['name','age','gender']
    d={}.fromkeys(keys,None) # 一行代码搞定上述for循环的工作
    print(d)

    3.3、内置方法(重要)

    3.3.1、按照key存取值,可存可取

    d={'k1':111}
    针对赋值操作:key存在,则修改
    d['k1']=222
    针对赋值操作:key不存在,则创建新值
    d['k2']=3333
    print(d)

    3.3.2、长度  len

    d={'k1':111,'k2':2222,'k1':3333,'k1':4444}
    print(d)
    print(len(d))

    3.3.3、运算符in和not in

    d={'k1':111,'k2':2222}
    print('k1' in d)
    print(111 in d)

    3.3.4、删除

    3.3.4.1、通用删除   del

    d={'k1':111,'k2':2222}
    del d['k1']
    print(d)

    3.3.4.2、根据key指定删除   pop  返回key对应的value

    d={'k1':111,'k2':2222}
    res=d.pop('k2')
    print(d)
    print(res)

    3.3.4.3、 随机删除  返回元组

    res=d.popitem()
    print(d)
    print(res)

    3.3.5、循环 for 关于items  需要对应key和value

    d={'k1':111,'k2':2222}
    for k,v in d.items():
        print(k,v)

    3.3.6、需要掌握的内置方法

    3.3.6.1、清除 clear

    d={'k1':111}
    d.clear()

    3.3.6.2、更新 update

    d={'k1':111}

    d.update({'k2':222,'k3':333,'k1':111111111111111})

    print(d)

    3.3.6.3、取值,没有不会报错,返回none,可以用来判断  get

    d.get() #根据key取值,容错性好
    print(d['k2'])  # key不存在则报错

    3.3.6.4、添加,有则不更改,返回原value    

           没有则添加,返回现value          setdefault

    info={'name':'egon'}
    res=info.setdefault('name','egon')
    print(info)
    print(res)
  • 相关阅读:
    POJ 1651:Multiplication Puzzle(区间DP)
    POJ 2955:Brackets(区间DP)
    LightOJ 1422:Halloween Costumes(区间DP入门)
    Gym 101257G:24(尺取)
    Codeforces 777D:Cloud of Hashtags(水题)
    Gym 101257B:2Trees(DFS+思维)
    Codeforces 777C:Alyona and Spreadsheet(思维)
    Codeforces 776C:Molly's Chemicals(思维)
    HDU-3440 House Man
    BZOJ-1202 狡猾的商人
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12465507.html
Copyright © 2011-2022 走看看