zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/francis1/p/11135176.html
Copyright © 2011-2022 走看看