• 7.4数据类型及内置方法(二)


    列表

    1.count

    统计字符出现的次数

    l = [1,2,2,4,5,6]
    l2 = l.count(2)
    print(l2)

    2.clear

    清空列表中的数据

    l = [1,2,2,4,5,6]
    l1 = l.clear()
    print(l)
    print(l1)

    3.reverse

    l = [1,2,2,4,5,6]
    l.reverse()
    print(l)

    4.sort

    把列表中的数据按照从小到大的顺序排序(升序)

    l = [1,5,7,6,2,4,3]
    l.sort()
    print(l)

    也可以通过指定的参数来达到从大到小排序(降序)

    l = [1,5,7,6,2,4,3]
    l.sort(reverse = True)
    print(l)

    5.队列和堆栈的概念

    队列:类似于排队,先排的先出来,列表中相当于先放的数据先拿出来

    l = []
    l.append(1)
    l.append(2)
    l.append(3)
    print(l)
    print(l.pop(0))
    print(l.pop(0))
    print(l.pop(0))
    View Code

    堆栈:类似于放一个书堆,先放的数要最后才能拿出来,列表中相当于先放的数据后拿出来

    l = []
    l.append(1)
    l.append(2)
    l.append(3)
    print(l)
    print(l.pop())
    print(l.pop())
    print(l.pop())
    View Code

    所以列表的特性就是:

    能存多个值,是有序的(可以用索引取值),是可变的(列表中的数据发生改变,列表的id不变)

    元组

    作用:能够存储多个数据,数据与数据之间用逗号隔开,数据可以是任意类型,元组本身不能被修改(但是元组中的某个数据如果是一个可变类型的数据,那么该数据是可以修改的,比如元组中的列表和字典)

    t = (1,[1,2])
    # t[0] = 2  # 会报错
    t[1][0] = 0
    print(t)
    View Code

    定义:与列表类型相比,只不过是[ ]换成了( )

    本质:t = (1,2,3,4,5)  # t = tuple((1,2,3,4,5))

    1.按索引取值(正向取,反向取),只能取值,不能存

    t = (1,2,3,4,5)
    print(t[0])
    print(t[-1])

    2.切片

    特点和字符串、列表切片一样,顾头不顾尾,参照字符串、列表切片方法。

    3.长度

    len:也和字符串、列表方法一样,得到的是元组中有多少个数据

    4.成员运算

    in 和 not in:也和字符串、列表方法一样

    5.循环

    for 变量名 in 元组:和字符串、列表方法一样

    t = (1,'h',[1,'w'],{'name':'Francis'},(1,5,'g'))
    for i in t:
        print(i)

    6.cound

    统计元组中数据出现的次数

    t = (1,2,2,4,5,6)
    t1 = t.count(2)
    print(t1)

    7.index

    返回的是数据在元组中第一次出现的索引

    t = [1,2,2,4,5,6]
    t1 = t.index(2)
    print(t1)

    所以元组的特性就是:

    能存多个数据,是有序的(可以用索引取值),是不可变的。

    额外重点:在定义容器类型的时候,哪怕内部只有一个元素,你也要用逗号隔开,区分一下!

    t1 = tuple((1,))  # 定义t1 = tuple((1))会报错  必须传容器类型
    n = (1,)
    n1 = (1)
    print(type(t1),type(n),type(n1))  # <class 'tuple'> <class 'tuple'> <class 'int'>

    字典

    作用:能够存储多组 key:value 键值对, key是对value的描述。

        key通常情况下都是字符串形式,key只能是不可变类型,value可以是任意数据类型。字典的key要有意义。

    定义:内部原理d = {'name': 'Francis','password': 23}  # d = dict( {'name':'Francis','password':23})

        字典的key要取的有意义,而且字典的key是不能重复的,要唯一对应一条数据,如果重复了,只会按照最后一组重复的键值对存储。

    d = {'name':'Francis','name':'jason','name':'egon','password':123}
    print(len(d))
    print(d)

    1.按key存取值:可存可取

    取值:用key取值

    d = {'name':'francis','age':23}
    print(d['name'])

    存值:用key存值

    d = {'name':'francis','age':23}
    d['name'] = 'jason'  # 赋值语句
    print(d)
    d['password'] = 123  # 赋值语句当key不存在的情况下,会自动新增一个键值对 
    print(d)

    2.长度

    len:方法与字符串、列表一样,不过返回的是字典中的 key:value键值对的个数

    3.成员运算

    in 和 not in:方法与字符串、列表一样,但是只能判断字典的key在不在字典里

    d = {'name':'francis','age':23}
    print('name' in d)
    print('francis' in d)

    4.删除

    1.del:直接删除,没有值返回

    d = {'name':'francis','age':23}
    del d['name']
    print(d)

    2.pop:弹出,会有值返回,但是返回的仅仅只是value

    d = {'name':'francis','age':23}
    res = d.pop('name')  # 弹出仅仅是value,当key不存在的时候会直接报错
    print(res)
    print(d)

    3.clear:清空字典,没有值返回

    d = {'name':'francis','age':23}
    print(d.clear())
    print(d)

    5.定义字典的三种方式

    1.第一种

    d = {'name':'francis','age':23}

    2.第二种

    d = dict(name='francis',password=123,age=23)
    print(d,type(d))

    3.第三种

    l = [['name','francis'],['password',123],['age',23]]
    d = {}
    for k,v in l:  # ['name','francis'],['password',123],['age','23']
        d[k] = v  # key:value
    print(d)
    d1 = dict(l)  # 第三种方法
    print(d1)

    6.键keys,值value,键值对items

    1.键keys:返回的是一个“老母猪”,可以把其当为一个列表来看

    d ={'name': 'francis', 'password': 123, 'age': 23}
    print(d.keys())

    2.值value:返回的是一个“老母猪”,可以把其当为一个列表来看

    d ={'name': 'francis', 'password': 123, 'age': 23}
    print(d.values())

    3.键值对items:返回的也是一个“老母猪”,可以把其看成是一个列表套元组,元组的第一个元素是字典的key,第二个元素是字典的value

    7.get

    根据key获取value

    d ={'name': 'francis', 'password': 123, 'age': 23}
    print(d['name'])
    print(d.get('name'))
    # print(d['xxx'])  # 没有这个key的时候会报错
    print(d.get('xxx'))  # 没有这个key的时候会返回None
    print(d.get('xxx','没有xxx'))  # 第二个参数不写的话,没有这个key默认返回的是None,写了就返回写的内容

    8.dict.fromkeys

    快速创建一个字典

    l = ['name','age','password','hobby']
    print(dict.fromkeys(l,'francis'))  # 'francis'是自己输入的value的值

    9.popitem

    尾部以元组的形式弹出键值对

    d ={'name': 'francis', 'password': 123, 'age': 23}
    print(d.popitem())  # 尾部以元组的形式弹出键值对
    print(d.popitem())
    print(d)

    10.setdefault

    d = {'name': 'francis','password': 123,'age': 23}
    print(d.setdefault('name',18))  # 当key存在的情况下,不修改value,并且将原先key对应的value返回给你
    print(d.setdefault('hobby', 'read'))  # 当key不存在的情况下,新增一个键值对,并且将新增的键值对的value返回给你
    print(d)

    11.update

    更新字典,就相当于添加键值对

    d = {'name': 'francis','password': 123}
    d1 = {'age': 23}
    d.update(d1)  # 给字典添加更新新的键值对
    print(d)
    d.update(hobby = 'read')  # 也可以key=value的形式
    print(d)

    12.循环

    for 变量名 in 字典:和字符串、列表方法一样

    d = {'name': 'francis', 'password': 123, 'age': 23}
    for i in d:
        print(i)

    所以字典的特性就是:

    能存多个值(键值对),是无序的(无法用索引取值),是可变的(字典中的数据发生改变,字典的id不变)

    集合

    作用:1.去重,2.关系运算

    定义:内部原理就是s = {1,2,3,4,5,6}  # s = set({1,2,3,4,5,6})。可以包含多个元素,用逗号分割。

        注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

    1.集合的元素遵循三个原则

    1.每个元素必须是不可变类型

    s = {1,'a',(1,2)}
    s1 = {1,'a',(1,2),[1,2]}  # 报错
    s2 = {1,'a',(1,2),{'name':'francis'}}  # 报错
    print(type(s))

    2.集合中没有重复,集合会自动将重复的元素去除

    s = {1,2,2,3,3,4,4,5}
    print(s)  #自动将重复的元素去除

    3.无序

    集合无法用索引取值

    2.注意:

    定义空集合只能用关键字set({ }),如果你仅仅只写了一个大括号{ },那么python默认将它当做字典类型

    d = {}
    s = set({})
    print(type(d))  # <class 'dict'>
    print(type(s))  # <class 'set'>

    3.长度

    len:方法与字符串、列表一样,返回的是集合中元素的个数

    4.成员运算

    in 和 not in:方法与字符串、列表一样,判断元素在不在集合中。

    5.交集,差集,对称差集,合集

    即数学意义上的求两个几个集合中数据的交集,差集,对称差集,合集

    pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}  # 报名python课程的人
    linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}  # 报名linux课程的人
    # 既报名python也报名linux的学生姓名
    print(pythons & linux)  # 交集
    
    # 只报名python的学生姓名  # 差集
    print(pythons - linux)
    
    # 只报名linux的学生姓名  # 差集
    print(linux - pythons)
    
    # 没有同时报名两门课程的学生姓名
    print(pythons ^ linux)  # 对称差集
    
    # 取出所有报了名的学生姓名
    print(pythons | linux)  #合集

    6.求两个集合的元素是否一致

    ==:

    s = {1,2,3}
    s1 = {3,1,2}
    print(s == s1)  # True

    7.父集,子集

    父集:>,>=

    子集:<,<=

    s = {1,2,3,4,5}
    s1 = {1,2,3,4,5}
    s2 = {1,2,3}
    print(s > s1)  # False
    print(s >= s1)  # True
    print(s2 < s)  #True

    8.添加元素

    add:

    s = {1,2,3,4,5}
    s.add(6)  # 往集合中添加元素
    print(s)
    s.add((1,2,3,4))  # 将容器类型也当成一个元素传入
    print(s)

    9.删除元素

    1.remove:从集合中删除指定的元素,集合中没有指定的元素就会报错

    s = {1,2,3,4,5}
    print(s.remove(3))
    print(s)
    print(s.remove(8))  # 集合中没有这个元素就会报错
    print(s)

    2.discard:从集合中删除指定的元素,集合中没有指定的元素就会返回None,不会报错

    s = {1,2,3,4,5}
    print(s.discard(3))
    print(s)
    print(s.discard(8))  # 集合中没有这个元素就会返回None,不会报错
    print(s)

    3.清空集合,删除所有元素

    s = {1,2,3,4,5}
    print(s.clear())
    print(s)
  • 相关阅读:
    2019牛客暑期多校训练营(第八场)A All-one Matrices(单调栈+前缀和)
    2019牛客暑期多校训练营(第三场)A Graph Games(分块)
    2019牛客暑期多校训练营(第二场)E MAZE(线段树维护矩阵+DP)
    2019牛客暑期多校训练营(第二场)D Kth Minimum Clique(bitset+暴力枚举)
    2019牛客暑期多校训练营(第一场)H XOR(线性基)
    2019牛客暑期多校训练营(第六场)D Move(multiset+枚举)
    2019牛客暑期多校训练营(第五场)H subsequence 2(拓扑排序)
    2019牛客暑期多校训练营(第六场)J Upgrading Technology(矩阵前缀和+最小子串和+贪心)
    2019牛客暑期多校训练营(第五场)G subsequence 1(dp+组合数)
    P3857 [TJOI2008]彩灯(线性基)
  • 原文地址:https://www.cnblogs.com/francis1/p/11135176.html
Copyright © 2020-2023  润新知