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
    """

  • 相关阅读:
    ORA-1652: unable to extend temp segment by xxx in tablespace
    Oracle导入异常: unable to create INITIAL extent for segment in tablespace MY_DATA(转)
    EL表达式取值
    JSP错误:According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    springmvc注解绑定参数心得
    springmvc绑定参数出现的异常
    springMVC参数的传递接收方式(转)
    springmvc注解@
    跟着开涛springmvc学习(转)
    CSS div文本垂直居中
  • 原文地址:https://www.cnblogs.com/wangnanfei/p/11135125.html
Copyright © 2011-2022 走看看