zoukankan      html  css  js  c++  java
  • 数据类型基本用法二

    今日学习内容列表、字典、元组、集合等类型的操作方法。

    列表

    列表类型今天补充了count、clear、reverse、sort

    l = [1,2,3,4,5,6,7]
    #count
    res = l.count(1)  # count的作用是列表中某个元素出现的次数
    print(res)
    
    #clear
    print(l.clear())  # clear的作用是将列表中的数据全部清除
    
    #reverse
     l.reverse()  # 将列表反转
    print(l)
    
    #sort
    l = [1,9,8,4,5,6,7]
    l.sort()  # 排序 默认情况下是从小到大(升序)
    print(l)
    >>>[1, 4, 5, 6, 7, 8, 9]
    l1= [1,9,8,4,5,6,7]
    l1.sort(reverse=True)
    print(l1)
    >>>[9, 8, 7, 6, 5, 4, 1]
    
    队列和堆栈的概念
    
    # 队列   先进先出
    # l1 = []
    # 先进
    # l1.append('first')
    # l1.append('second')
    # l1.append('third')
    # # 先出
    # print(l1.pop(0))
    # print(l1.pop(0))
    # print(l1.pop(0))
    >>>first
           second
           third
    
    # 堆栈   先进后出
    # 先进
    # l1.append('first')
    # l1.append('second')
    # l1.append('third')
    # 后出
    # print(l1.pop())
    # print(l1.pop())
    # print(l1.pop())
    >>>third
           second
           first        

    元组

    作用:能够存储多个元素,元素与元素之间逗号隔开  元素可以是任意类型,元组不能被修改

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

    age=(11,22,33,44,55)  #本质age=tuple((11,22,33,44,55))
    1、按索引取值(正向取+反向取):只能取
    t = (1, 2, 3, 'a', 'b', [1, 2, 3])
    print(t[0])
    t[1] = 'hahah'  # 报错
    t[-1] = 'hahaha'  # 报错
    t[-1][0] = '我改了'  # (1, 2, 3, 'a', 'b', ['我改了', 2, 3])
    print(t)
    
    del t[0]
    print(t)

    元组内部的元素是不能改变的,但如果内部元素中有可变类型的元素如列表等,列表中的元素可以改变。

    2、切片(顾头不顾尾,步长)
    print(t[::2])
    3、长度
    print(len(t))
    4、成员运算in和not in
    print('a' in t)
    5、循环
    for i in t:
    print(i)

    总结:元组能存多个值,他是有序的,是不可变类型。

    字典

    作用:能存存储多组 key:value键值对 key是对value的描述 key通常情况下都是字符串

    d = {'name':'jason','password':123}  # d = dict( {'name':'jason','password':123})
    d1 = {1:'1',0:'0',1.11:'1.11',(1,2):'到底能不能呢?'}
    print(d1[1.11])  # 1.11
    print(type(d1))  # <class 'dict'>
    print(d1[(1,2)])  # 到底能不能呢?
    其实这个key只能是不可变类型,value可以是任意数据类型
    d2 = {'name':'jason','name':'tank','name':'nick','password':123}
    强调:字典的key是不能重复的,要唯一标识一条数据,如果重复了,只会按照最后一组重复的键值对存储。
    print(len(d2))
    print(d2)
    
    1、按key存取值:可存可取
    d3 = {'name':'jason','password':'123'}
    d3['name'] = 'egon'
    print(d3,id(d3))
    d3['age'] = 18  # 赋值语句当key不存在的情况下,会自动新增一个键值对(******)
    print(d3,id(d3))
    >>>{'name': 'jason', 'password': '123', 'age': 18} 951920647480
    
    2、长度len
    统计的键值对的个数
    
    3、成员运算in和not in   对于字典来说只能判断key值
    d3 = {'name':'jason','password':'123'}
    print('123' in d3)  # False
    print('name' in d3)  # True
    
    4、删除
    d3 = {'name':'jason','password':'123'}
    print(d3)
    res = d3.pop('name')  # 弹出仅仅是value
    res = d3.pop('age')  # 当键不存在的时候直接报错
    print(res)
    print(d3)
    d3.clear()  # 将字典的内容清空
    print(d3)
    
    5、定义字典的方式
    1、第一种
    d1 = {'name':'jason','password':123}
    
    2、第二种
    d2 = dict(name='jason',password=123,age=18)
    l = [
        ['name','jason'],
        ['age',18],
        ['hobby','read']
    ]
    
    3、第三种
    d3 = dict(l)
    print(d3)
    
    6、get()根据key获取value
    print(d.get(‘name’,...))  # key值不存在时返后一个None,不报错
    
    7、dict.fromkeys()  快速的创建一个字典
    l1 = ['name','password','age','hobby']
    print(dict.fromkeys(l1,123))
    
    8、更新dict.update()
    d1 = {'name':'jason','pwd':123}
    d2 = {"age":18}
    d1.update(d2)
    d1['age'] = 18
    d1.update(age=666)
    print(d1)
    
    9、dict.popitem()
    print(d1.popitem())  # 尾部以元组的形式弹出键值对
    
    10、setdefault
    dict.setdefault()
    d1 = {'name':'jason','pwd':123}
    res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
    print(d1,res1)
    res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
    print(d1,res2)
    
    11、键keys(),值values(),键值对items()
    d1 = {'name':'jason','password':123}
    print(d1.keys())  # dict_keys(['name', 'password']) 
    print(d1.values())  # dict_values(['jason', 123])
    print(d1.items())  # dict_items([('name', 'jason'), ('password', 123)])
    # 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的value
    #items的应用实例
    d = {'a':1,'b':2,'c':3,'d':4}
    for k,v in d.items():
        print(k,v)
    >>>:a 1
            b 2
            c 3
            d 4

    集合

    作用:群体之间做比较,不涉及单个元素。能够去重。

    s1 = set()
    print(type(s1))  # 注意在定义空集合的只能用关键字set
    x = {}  # <class 'dict'>  如果你仅仅只写了一个大括号 那么python默认将它当做字典类型
    print(type(x))

    定义集合
    集合:可以包含多个元素,用逗号分割。

    集合的元素遵循三个原则:
    1、每个元素必须是不可变类型
    可变:不可hash
    不可变:可hash

    s = {1,2,3,4,5,6,'a',(1,2),[1,2]}  # 报错
    s = {1,2,3,4,5,6,'a',(1,2),{"name":'jason'}}  # 报错

    2、没有重复的元素

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

    3、无序

    s = {1, 2, 3, 4, 5, 6}
    print(s[1])

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

    集合的操作

    1、长度len

    s = {1,2,3,4}
    print(len(s))

    2、成员运算in和not in

    3、|合集
    4、&交集
    5、-差集
    6、^对称差集

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

    7、==

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

    8、父集:>,>=

    s = {1,2,3,4,55}
    s2 = {1,2,666}
    print(s>s2)
    >>>False
    s = {1,2,3,4,55}
    s2 = {1,2,4}
    print(s>s2)
    >>>True

    9、子集:<,<=(原理同上)

    今日总结:

    可变:list dict set
    不可变 int float str tuple bool

    l=[1,2,3,4]
    l2=[1,2,3,4]
    print(id(l))
    print(id(l[0]),id(l[1]),id(l[2]),id(l[3]))
    print(id(l2))
    print(id(l2[0]),id(l2[1]),id(l2[2]),id(l2[3]))
    >>>:
    """
    233231226696
    1730178528 1730178560 1730178592 1730178624
    233231226824
    1730178528 1730178560 1730178592 1730178624
    """

  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/wangnanfei/p/11135125.html
Copyright © 2011-2022 走看看