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)关系运算

  • 相关阅读:
    MIne FirstBlog
    P6563 [SBCOI2020]一直在你身旁
    P6563 [SBCOI2020]一直在你身旁
    T122085 [SBCOI2020]时光的流逝
    LC 918. Maximum Sum Circular Subarray
    1026 Table Tennis
    LC 1442. Count Triplets That Can Form Two Arrays of Equal XOR
    LC 1316. Distinct Echo Substrings
    LC 493. Reverse Pairs
    1029 Median (二分)
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/12460454.html
Copyright © 2011-2022 走看看