zoukankan      html  css  js  c++  java
  • 列表-元组-字典

    三.列表

    一)定义

    1 # 定义:在[]内,用逗号分隔开多个任意数据类型的值
    2 l1 = [1,'a',[1,2]]  # 本质:l1 = list([1,'a',[1,2]])

    二)类型转换

    1 # 但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
    2 >>> list('wdad') # 结果:['w', 'd', 'a', 'd'] 
    3 >>> list([1,2,3]) # 结果:[1, 2, 3]
    4 >>> list({"name":"jason","age":18}) #结果:['name', 'age']
    5 >>> list((1,2,3)) # 结果:[1, 2, 3] 
    6 >>> list({1,2,3,4}) # 结果:[1, 2, 3, 4]

    三)使用

    1)优先掌握的操作

     1 # 1.按索引存取值(正向存取+反向存取):即可存也可以取 
     2 # 1.1 正向取(从左往右) 
     3 >>> my_friends=['tony','jason','tom',4,5]
     4  >>> my_friends[0] 
     5 tony 
     6 # 1.2 反向取(负号表示从右往左) 
     7 >>> my_friends[-1] 
     8 5 
     9 # 1.3 对于list来说,既可以按照索引取值,又可以按照索引修改指定位置的值,但如果索引不存在则报错 
    10 >>> my_friends = ['tony','jack','jason',4,5] 
    11 >>> my_friends[1] = 'martthow' 
    12 >>> my_friends ['tony', 'martthow', 'jason', 4, 5]
    13 
    14  # 2.切片(顾头不顾尾,步长) 
    15 # 2.1 顾头不顾尾:取出索引为0到3的元素 
    16 >>> my_friends[0:4] ['tony', 'jason', 'tom', 4]
    17  # 2.2 步长:0:4:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2的元素 
    18 >>> my_friends[0:4:2] ['tony', 'tom'] 
    19 # 3.长度
    20  >>> len(my_friends)
    21  5 
    22 # 4.成员运算in和not in
    23  >>> 'tony' in my_friends 
    24 True 
    25 >>> 'xxx' not in my_friends 
    26 True 
    27 # 5.添加 
    28 # 5.1 append()列表尾部追加元素 
    29 >>> l1 = ['a','b','c'] 
    30 >>> l1.append('d') 
    31 >>> l1 ['a', 'b', 'c', 'd'] 
    32 # 5.2 extend()一次性在列表尾部添加多个元素 
    33 >>> l1.extend(['a','b','c']) 
    34 >>> l1 ['a', 'b', 'c', 'd', 'a', 'b', 'c'] 
    35 # 5.3 insert()在指定位置插入元素 
    36 >>> l1.insert(0,"first") 
    37 # 0表示按索引位置插值 
    38 >>> l1 ['first', 'a', 'b', 'c', 'd', 'a', 'b', 'c'] 
    39 # 6.删除 
    40 # 6.1 del 
    41 >>> l = [11,22,33,44] 
    42 >>> del l[2] 
    43 # 删除索引为2的元素 
    44 >>> l [11,22,44] 
    45 # 6.2 pop()默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素 
    46 >>> l = [11,22,33,22,44] 
    47 >>> res=l.pop() >>> res 44 
    48 >>> res=l.pop(1) 
    49 >>> res 22 
    50 # 6.3 remove()括号内指名道姓表示要删除哪个元素,没有返回值 
    51 >>> l = [11,22,33,22,44] 
    52 >>> res=l.remove(22) 
    53 # 从左往右查找第一个括号内需要删除的元素 
    54 >>> print(res) None 
    55 # 7.reverse()颠倒列表内元素顺序 
    56 >>> l = [11,22,33,44] 
    57 >>> l.reverse() 
    58 >>> l [44,33,22,11] 
    59 # 8.sort()给列表内所有元素排序
    60  # 8.1 排序时列表元素之间必须是相同数据类型,不可混搭,否则报错 
    61 >>> l = [11,22,3,42,7,55] >>> l.sort() 
    62 >>> l [3, 7, 11, 22, 42, 55] 
    63 # 默认从小到大排序 
    64 >>> l = [11,22,3,42,7,55] 
    65 >>> l.sort(reverse=True) 
    66 # reverse用来指定是否跌倒排序,默认为False 
    67 >>> l [55, 42, 22, 11, 7, 3] 
    68 # 8.2 了解知识:
    69  # 我们常用的数字类型直接比较大小,但其实,字符串、列表等都可以比较大小,原理相同:都是依次比较对应位置的元素的大小,如果分出大小,则无需比较下一个元素,比如
    70  >>> l1=[1,2,3]
    71  >>> l2=[2,] 
    72 >>> l2 > l1 True 
    73 # 字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大 
    74 >>> s1='abc' 
    75 >>> s2='az' 
    76 >>> s2 > s1
    77  # s1与s2的第一个字符没有分出胜负,但第二个字符'z'>'b',所以s2>s1成立 True # 所以我们也可以对下面这个列表排序
    78  >>> l = ['A','z','adjk','hello','hea'] 
    79 >>> l.sort() 
    80 >>> l ['A', 'adjk', 'hea', 'hello','z'] 
    81 # 9.循环 # 循环遍历my_friends列表里面的值
    82  for line in my_friends:
    83  print(line)
    84  'tony' 'jack' 'jason' 4 5

    2)了解操作

    1 >>> l=[1,2,3,4,5,6]
    2 >>> l[0:3:1] 
    3 [1, 2, 3]  # 正向步长
    4 >>> l[2::-1] 
    5 [3, 2, 1]  # 反向步长
    6 
    7 # 通过索引取值实现列表翻转
    8 >>> l[::-1]
    9 [6, 5, 4, 3, 2, 1]

    五.元组

    一)作用

    元组与列表类似,也是可以存多个任意类型的元素,不同之处在于元祖的元素不能修改,即元组相当于不可变的列表,用于记录多个固定不允许修改的值,单纯用于取

    二)定义

    1 # 在()内用逗号分隔开多个任意类型的值
    2 >>> countries = ("中国","美国","英国")  
    3 # 本质:countries = tuple("中国","美国","英国")
    4 # 强调:如果元组内只有一个值,则必须加一个逗号,否则()就只是包含的意思而非定义元组
    5 >>> countries = ("中国",)  # 本质:countries = tuple("中国")

    三)转换类型

    1 # 但凡能被for循环的遍历的数据类型都可以传给tuple()转换成元组类型
    2 >>> tuple('wdad') # 结果:('w', 'd', 'a', 'd') 
    3 >>> tuple([1,2,3]) # 结果:(1, 2, 3)
    4 >>> tuple({"name":"jason","age":18}) # 结果:('name', 'age')
    5 >>> tuple((1,2,3)) # 结果:(1, 2, 3)
    6 >>> tuple({1,2,3,4}) # 结果:(1, 2, 3, 4)
    7 # tuple()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到元组中

    四)使用

     1 >>> tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33) 
     2 # 1、按索引取值(正向取+反向取):只能取,不能改否则报错!  
     3 >>> tuple1[0]
     4 1
     5 >>> tuple1[-2]
     6 22
     7 >>> tuple1[0] = 'hehe'  # 报错:TypeError:
     8 
     9 # 2、切片(顾头不顾尾,步长)
    10 >>> tuple1[0:6:2] 
    11 (1, 15000.0, 22)
    12 
    13 # 3、长度
    14 >>> len(tuple1)  
    15 6
    16 
    17 # 4、成员运算 in 和 not in
    18 >>> 'hhaha' in tuple1 
    19 True
    20 >>> 'hhaha' not in tuple1  
    21 False 
    22 
    23 # 5、循环
    24 >>> for line in tuple1:
    25 ...     print(line)
    26 1
    27 hhaha
    28 15000.0
    29 11
    30 22
    31 33

    六.字典

    一)定义:在{}内用逗号分隔开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key则必须是不可变类型,详见第八小节,通常key应该是str类型,因为str类型会对value有描述性的功能

    1 #定义
    2 info={'name':'tony','age':18,'sex':'male'}
    3  #本质info=dict({....})
    4 # 也可以这么定义字典
    5 info=dict(name='tony',age=18,sex='male') 
    6 # info={'age': 18, 'sex': 'male', 'name': 'tony'}

    二)类型转换

    1 # 转换1: 
    2 >>> info=dict([['name','tony'],('age',18)])
    3 >>> info
    4 {'age': 18, 'name': 'tony'}
    5 
    6 # 转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
    7 >>> {}.fromkeys(('name','age','sex'),None)  
    8 {'age': None, 'sex': None, 'name': None}

    三)使用

     1)优先掌握

     1 # 1、按key存取值:可存可取
     2 # 1.1 取
     3 >>> dic = {
     4 ...     'name': 'xxx',
     5 ...     'age': 18,
     6 ...     'hobbies': ['play game', 'basketball']
     7 ... }
     8 >>> dic['name']
     9 'xxx'
    10 >>> dic['hobbies'][1]
    11 'basketball'
    12 # 1.2 对于赋值操作,如果key原先不存在于字典,则会新增key:value
    13 >>> dic['gender'] = 'male'  
    14 >>> dic
    15 {'name': 'tony', 'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'}
    16 # 1.3 对于赋值操作,如果key原先存在于字典,则会修改对应value的值
    17 >>> dic['name'] = 'tony'
    18 >>> dic
    19 {'name': 'tony', 'age': 18, 'hobbies': ['play game', 'basketball']}
    20 
    21 
    22 # 2、长度len
    23 >>> len(dic) 
    24 3
    25 
    26 
    27 # 3、成员运算in和not in
    28 >>> 'name' in dic  # 判断某个值是否是字典的key
    29 True
    30 
    31 
    32 # 4、删除
    33 >>> dic.pop('name')  # 通过指定字典的key来删除字典的键值对
    34 >>> dic
    35 {'age': 18, 'hobbies': ['play game', 'basketball']}
    36 
    37 
    38 # 5、键keys(),值values(),键值对items()
    39 >>> dic = {'age': 18, 'hobbies': ['play game', 'basketball'], 'name': 'xxx'}
    40 # 获取字典所有的key
    41 >>> dic.keys()  
    42 dict_keys(['name', 'age', 'hobbies'])
    43 # 获取字典所有的value
    44 >>> dic.values()
    45 dict_values(['xxx', 18, ['play game', 'basketball']])
    46 # 获取字典所有的键值对
    47 >>> dic.items()
    48 dict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])])
    49 
    50 
    51 # 6、循环
    52 # 6.1 默认遍历的是字典的key
    53 >>> for key in dic:
    54 ...     print(key)
    55 ... 
    56 age
    57 hobbies
    58 name
    59 # 6.2 只遍历key
    60 >>> for key in dic.keys():
    61 ...     print(key)
    62 ... 
    63 age
    64 hobbies
    65 name
    66 # 6.3 只遍历value
    67 >>> for key in dic.values():
    68 ...     print(key)
    69 ... 
    70 18
    71 ['play game', 'basketball']
    72 xxx
    73 # 6.4 遍历key与value
    74 >>> for key in dic.items():
    75 ...     print(key)
    76 ... 
    77 ('age', 18)
    78 ('hobbies', ['play game', 'basketball'])
    79 ('name', 'xxx')

    2)需要掌握:

    1.get()

     1 >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
     2 >>> dic.get('k1')
     3 'jason'  # key存在,则获取key对应的value值
     4 >>> res=dic.get('xxx') # key不存在,不会报错而是默认返回None
     5 >>> print(res)
     6 None  
     7 >>> res=dic.get('xxx',666) # key不存在时,可以设置默认返回的值
     8 >>> print(res)
     9 666 
    10 # ps:字典取值建议使用get方法

    2.pop()

    1 >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    2 >>> v = dic.pop('k2')  # 删除指定的key对应的键值对,并返回值
    3 >>> dic
    4 {'k1': 'jason', 'kk2': 'JY'}
    5 >>> v
    6 'Tony'

    3.popitem()

    1 >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    2 >>> item = dic.popitem()  # 随机删除一组键值对,并将删除的键值放到元组内返回
    3 >>> dic
    4 {'k3': 'JY', 'k2': 'Tony'}
    5 >>> item
    6 ('k1', 'jason')

    4.update()

    1 # 用新字典更新旧字典,有则修改,无则添加
    2 >>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
    3 >>> dic.update({'k1':'JN','k4':'xxx'})
    4 >>> dic
    5 {'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}

    5.fromkeys()

    1 >>> dic = dict.fromkeys(['k1','k2','k3'],[])
    2 >>> dic
    3 {'k1': [], 'k2': [], 'k3': []}

    6.setdefault()

     1 # key不存在则新增键值对,并将新增的value返回
     2 >>> dic={'k1':111,'k2':222}
     3 >>> res=dic.setdefault('k3',333)
     4 >>> res
     5 333
     6 >>> dic # 字典中新增了键值对
     7 {'k1': 111, 'k3': 333, 'k2': 222}
     8 
     9 # key存在则不做任何修改,并返回已存在key对应的value值
    10 >>> dic={'k1':111,'k2':222}
    11 >>> res=dic.setdefault('k1',666)
    12 >>> res
    13 111
    14 >>> dic # 字典不变
    15 {'k1': 111, 'k2': 222}

    七.集合

    一)作用:集合 list tuple dict一样都可以存放多个值,但实际和主要用于:去重 关系运算

    二)定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
    1:每个元素必须是不可变类型
    2:集合内没有重复的元素
    3:集合内元素无序

    1 s = {1,2,3,4}  # 本质 s = set({1,2,3,4})

    # 注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。

    # 注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
    d = {} # 默认是空字典
    s = set() # 这才是定义空集合

    三)类型转换:

    但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型

    >>> s = set([1,2,3,4])
    >>> s1 = set((1,2,3,4))
    >>> s2 = set({'name':'jason',})
    >>> s3 = set('egon')
    >>> s,s1,s2,s3
    {1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'}

    四)使用

    1)关系运算

  • 相关阅读:
    legend3---videojs存储视频的播放速率便于用户观看视频
    legend3---mathjax的动态渲染问题解决
    matplotlib库疑难问题---10、画直方图
    matplotlib库疑难问题---9、画箭头(综合实例)
    js释放图片资源
    javascript中的原型与原型链
    前端跨域方式
    matplotlib清除 axes 和 figure
    matplotlib画直方图细解
    CentOS 7.8 安装 Python 3.8.5
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/12460454.html
Copyright © 2011-2022 走看看