zoukankan      html  css  js  c++  java
  • 数据类型

    4、list 列表

    list是Python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是用[]括起来的,每个元素以逗号隔开,而且他里面可以存放各种数据类型,比如:

    li = [1,2,True,"哈哈",(1,2,3,"小明"),[1,2,3'小明'],{name:'alex'}]

    列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,并且列表是有序的,有索引值,可切片,方便取值。

    列表的操作:

    li = ['刘德华','吴彦祖','周星驰','彭于晏'] #创建数组
    print(li)
    
    # ----- 增 ----- append insert extend
    li.append("张艺兴") #在列表尾部追加"张艺兴"
    print(li)
    li.insert(1,"张艺兴")
    print(li) #在索引为1的位置插入"张艺兴"
    li.extend("罗志祥") #迭代着插入
    print(li)# ['刘德华', '吴彦祖', '周星驰', '彭于晏', '罗', '志', '祥']
    li.extend(["罗志祥"]) # 将list列表迭代
    print(li)
    
    # ----- 删 ------ pop remove del clear
    l1 = li.pop(1) # 删除指定索引处的值 返回值为删除的元素
    print(l1)
    li.remove("刘德华") # 删除指定元素
    li.remove("123") # 不存在则报错
    print(li)
    del li[0:5] #删除指定切片长度的元素 顾头不顾尾 无返回值 del-关键字
    print(li)
    li.clear() #清除list中所有的元素
    print(li) # []
    
    # ----- 改 ------- 直接赋值 切片
    li[0] = "张艺兴" #利用直接赋值的方式修改
    print(li)
    li[0::2] = ["a",'b','c'] # Wrong!!步数不是1的时候,必须匹配元素个数
    # attempt to assign sequence of size 3 to extended slice of size 2
    print(li)
    
    # ----- 查 ------ 切片查 或者循环去查
    #例如查'吴彦祖'
    cou = 0
    for i in li:
        if i == "吴彦祖":
            print(cou)
        else:
            cou += 1
    
    # ----- 其他操作 ------ count index sort reverse
    # count() 方法用于统计某个元素在列表中出现的次数
    cou = li.count('刘德华')
    print(cou)
    
    # index()方法用于从列表中找到某个值第一个匹配项的索引
    cou = li.index("周星驰")
    print(cou)
    
    # sort()方法用于在原位置对列表进行排序 默认升序
    li_1 = [3,2,1,5,7,6]
    li_1.sort() #升序
    li_1.sort(reverse=True) #降序
    print(li_1)
    
    # reverse() 将列表中的元素反向存放
    li.reverse()
    print(li)

    列表的嵌套:使用降维操作,一层一层看

     lst = [1, "太白", "wusir", ["马虎疼", ["可口可乐"], "王剑林"]] # 找到wusir
    print(lst[2])
    # 找到太白和wusir
    print(lst[1:3])
    # 找到太白的白字
    print(lst[1][1])
    # 将wusir拿到. 然后首字母大写. 再扔回去
    s = lst[2]
    s = s.capitalize()
    lst[2] = s
    print(lst)

    5、tuple 元组

    元组和元组的嵌套:

    元组:俗称不可变的列表,又称只读列表,元组也是Python的基本数据类型之一,用小括号括起来,里面可以放任何数据类型的数据,可以查询,可以循环遍历,可以切片,但就是不可以修改

     tu = (1, "太白", "李白", "太黑", "怎么黑") print(tu)
    print(tu[0])
    print(tu[2])
    print(tu[2:5]) # 切片之后还是元组
    # for循环遍历元组
    for el in tu: print(el)
    # 尝试修改元组
    # tu[1] = "马虎疼" # 报错 'tuple' object does not support item assignment
    tu = (1, "哈哈", [], "呵呵")
    # tu[2] = ["fdsaf"] # 这么改不行
    tu[2].append("麻花藤") # 可以改了. 没报错 tu[2].append("王剑林")
    print(tu)
    关于不可变, 注意:

    元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组

    元组也有count(), index(), len()等方法. 可以自己测试使用

    range:

    range可以帮我们获取到一组数据. 通过for循环能够获取到这些数据. 顾头不顾尾
     for num in range(10): print(num)
    for num in range(1, 10, 2): print(num)
    for num in range(10, 1, -2): print(num)

    6、dict 字典

    字典(dict)是Python中唯一一个映射类型,是以{}括起来的键值对组成。

    在dict中key是唯一的,在保存中,根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为哈希算法。

    key:必须是可哈希的,也就是不可变的(int str tuple bool),为了能准确计算内存地址而规定的。

    dict保存的数据不是按照我们添加进去的顺序保存的,是按照哈希表的顺序保存的,而哈希表不是连续的,所以不能进行切片工作,只能通过key来获取dict中的数据。

    字典的操作:

    #dict - 字典 由key:value组成,用{}
    #其中key取值:不可变类型(例如str、int、bool、tuple),即可哈希  value:任意类型
    #dict的创建:
    dic = {'name':'xin','age':18,'address':'beijing'}
    # print(dic)
    #dict 的操作 -- 增删改查
    # ------ 增 -------
    #
    dic['sex'] = 'male' #key值不存在直接新增
    print(dic)
    dic['name'] = 'liang' #key值存在则进行覆盖
    print(dic)
      # ② 设置默认值
    dic.setdefault('sex') #只写一个key,value默认为None
    print(dic)
    dic.setdefault('sex','male')#key值不存在直接新增
    print(dic)
    dic.setdefault('name','liang') #key值存在则不进行任何操作
    print(dic)
    
    # ----- 删 ----- clear()  pop(key) popitem() del
    dic.clear() #清空内容
    print(dic) # {}
    dic.pop('name') #删除key = name 的键值对
    dic.pop('123') #key不存在报错 KeyError: '123'
    print(dic)
    print(dic.popitem()) #结果为 ('age', 18) key value元组
    k,v = dic.popitem() #解构 数量必须匹配
    print(k,v) #k = name v = xin
    del dic['name'] #删除key = name的键值对
    print(dic)
    
    # ------- 改 -------
    dic['name'] = 'liang' #直接修改
    
    dic2 = {'name':'xin','age':32,'id':1,'family':4}
    dic.update(dic2)
    print(dic) # dic 相对于 dic2 中 key值存在,则dic2覆盖value值,不存在,则新增到dic中
    print(dic2) #dic2 不变
    
    # ------- 查 -------
    print(dic['name']) #根据key输出value
    print(dic['123']) #key不存在报错
    print(dic.get('123','不存在')) #key不存在则输出'不存在'
    
    # ------- 其他操作 -----
    print(dic.keys()) #输出所有的key,结果是 dict_keys(['address', 'name', 'age'])
    print(dic.values()) #输出所有的value
    li = dic.items() #dict_items([('name', 'xin'), ('age', 18), ('address', 'beijing')])
    for k,v in li: #遍历
        print(k,v)

    7、set 集合

    保存大量数据,不可以重复

  • 相关阅读:
    POJ 2388
    HDU 6152
    POJ 3085
    C语言字符数组回顾
    ZOJ 2480
    SQL学习(1)初学实验:SQL Server基本配置及基本操作
    Kali Linux入坑之基本配置(2018.1)
    C学习笔记(逗号表达式)
    C学习笔记(自增)
    forEach()&map()区别
  • 原文地址:https://www.cnblogs.com/liangying666/p/9133313.html
Copyright © 2011-2022 走看看