• python的可变list和不可变tuple, dict和set


    list和tuple

    在python中分为可变表和不可变表:

    类型 名称 表示方法
    可变 list []
    不可变 tuple ()

    list

    • list是可变表,list内部索引从0开始,正整数是正序的索引,负整数是 反向索引,例如list[-1]和list[-2]分别表示最后一个和倒数第二个元素
    • list索引越界会报错“list index out of range”
    • list支持二维和多维,元素可以是list或tuple
    • list的方法
    序号 方法 作用
    1 append() 末尾追加
    2 insert(index, context) 指定位置插入
    3 pop(index) 删除指定位置元素,如果index为空表示删除末尾元素
    4 list[i] = context 替换指定位置的元素内容
    l1 = [1, 2, 'a']
    print(l1)
    l1.append('b')
    print(l1)
    l1.pop()
    print(l1)
    l1.insert(1, 'c')
    

    tuple

    tuple是有序表,也就是内容是不可变的,编程中尽量以tuple代替list

    • 定义一个空的tuple是直接复制空:
    t = ();
    
    • 定义只有一个元素的tuple不能将1写入括号中,要用逗号区分:
    t = (1,);
    

    注意如果tuple中间包含的是list,那么改变list的内容是合法的


    dict

    *dict也就是dictionary,是python中的map,底层也是hash算法来实现。采用空间换时间

    d = {'name1':'zhangsang', 1:100}
    print(d['name1'])
    print(d[1])
    
    if 'name1' in d:
        print(d['name1'])
    
    print('Reset name1:lisi')    
    d['name1'] = 'lisi'
    print(d['name1'])
    
    print('get name1 from d:')
    d.get('name1')
    
    print('pop name1')
    d.pop('name1')
    print(d)
    #d.get('name1', -1)
    #print(d['name1'])
    
    

    从代码中可以看出来:

    • dict以key和value配对出现
    • dict的key是否存在可以用in来判断,或者使用get方法。并且get方法如果没有默认返回None或是自己指定的值
    • dict使用pop来移除元素
    • dict的key的选取要使用不可变元素:整数和字符串等

    set

    set也是不可变的,其中只存放key

    s = set([1, 2, 3])
    print('s is a set:', s)
    
    print('add 1 twice:')
    s.add(1)
    s.add(1)
    print('new s is a set:', s)
    
    s1 = set(['a', 'b'])
    print(s1)
    print('s | s1')
    print(s | s1)
    
    print('remove "'"a"'" from s1')
    s1.remove('a')
    print(s1)
    
    

    从代码中看:

    • 赋值的方法要注意有set关键字
    • list是set的输入集合
    • set不支持重复元素
    • set可以使用交集和并集来处理元素
  • 相关阅读:
    cocos2d-x 团队碰面有感
    2014年3月份 月会
    2014年特种兵训练营感想
    web 的简单框架
    【实用小技巧】virtual box 虚拟机复制
    flash的Socket通讯沙箱和安全策略问题
    Codeforces Round #237 (Div. 2)
    类的静态常量数组初始化
    关于自己的成长计划
    Android
  • 原文地址:https://www.cnblogs.com/bugstar/p/7724152.html
Copyright © 2020-2023  润新知