zoukankan      html  css  js  c++  java
  • Day 08 可变与不可变对象/列表与字典内置方法

    可变对象与不可变对象

    可变对象

    对象指向的内存中的值会改变,当更改这个变量的时候,还是指向原来内存中的值,并且在原来的内存值进行原地修改,并没有开辟新的内存。

    lis = [1]
    print(id(lis)) # 167724168
    lis.append(2)
    print(id(lis)) # 167724168
    

    不可变对象

    对象所指向的内存中的值不能被改变,当改变这个变量的时候,原来指向的内存中的值不变,变量不再指向原来的值,而是开辟一块新的内存,变量指向新的内存。

    x = 10 # 定义变量就会开辟一块新的内存空间存放变量
    print(id(x)) # 1724673792
    x = x + 1
    print(id(x)) # 1733455648 x的id发生了变化,既x原来指向的内存中的值不变,x不再指向原来的值,而是开辟出一块新的内存, x指向新的内存
    

    列表的内置方法

    lis = [1, 2, 3]
    
    # 索引取值/索引修改值
    lis = [0]
    print(lis) # 1
    
    # 索引切片
    print(lis[0:2]) # 1 2
    
    #成员运算in / not in
    print(1 in lis) # True
    print(4 not in lis) # True
    
    # for循环
    for i in lis:
        print(1)
    
    # 长度len
    print(len(lis)) # 3
    
    # .append() 追加值
    lis.append(4) # [1, 2, 3, 4]
    
    # .sort() 排序
    lis = [3, 2, 1]
    lis.sort()
    print lis # [1, 2, 3]
    
    # .reverse() 反转
    lis.reverse()
    print(lis) # [3, 2, 1]
    
    # .index() 获取元素索引
    print(lis.index(2)) # 1
    
    # .clear() 清空列表
    lis.clear()
    print(lis) # []
    
    # .copy() 复制
    lis1 = lis.copy()
    print(lis1) # [1, 2, 3]
    
    # .extend() 扩展列表
    lis1 = [4, 5, 6]
    lis.extend(lis1)
    print(lis) # [1, 2, 3, 4, 5, 6]
    
    # .remove 移除
    lis.remove(3)
    print(lis) # [1,2]
    
    # .insert() 按照索引插入值(在前插入)
    lis.insert(0, -1)
    print(lis) # [-1, 1, 2, 3] 
    

    字典内置方法

    dic = {'a': 1, 'b': 2, 'c': 3}
    
    # 按key取值/按key修改值/按key增加值
    print(dic['a']) # 1
    
    dic['a'] = 0
    print(dic) # {'a': 0, 'b': 2, 'c': 3}
    
    dic['d'] = 4
    print(dic) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    
    # 成员运算(比较的是key)
    print('a' in dic) # True
    print('e' not in dic) # True
    
    # for循环(对key循环)
    for i in dic:
        print(i) # a b c
        
    # .keys()/.value()/.items() -- 返回列表
    print(dic.keys()) # 所有的key
    print(dic.values()) # 所有的值
    print(dic.items()) # 所有的键值对
    
    # get() 取值
    print(dic.get('a', 0)) # 找到了就返会a在字典中对应的值, 没找到就返回None, 如果给定了0, 没找到就返回0
    
    # .update() 扩展字典
    dic1 = {'d': 4}
    dic.update(dic1) 
    print(dic) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    
    # .setdefault() 有则不变,无则增加
    dic.setdefault('a', 2)
    print(dic) # {'a': 1, 'b': 2, 'c': 3}
    dic.setdefault('d', 4)
    print(dic) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    
    
  • 相关阅读:
    WPF控件模型
    WPF布局之Canvas
    WPF布局之Grid
    WPF布局之Panel
    cxGrid让指定的某行自动呈选选中的状态
    VMware Esxi5.5中嵌套虚拟机的网络设置方法
    SQLServer (2005/2008) 日志清理方法
    控制cxGrid 主从表的明细只展开一个
    关于Delphi cxGrid主从表中从表只能编辑第一条记录的问题
    自动化工程师面试常见问题
  • 原文地址:https://www.cnblogs.com/bigb/p/11436590.html
Copyright © 2011-2022 走看看