python 对象和引用
python 对象和引用
在python当中一切皆对象,我们可以先创建一个对象,并给对象一定的值,这叫做实例化,然后再把此对象可以被其他对象所引用,列表操作如下:
list1 = [1,2,"a","b",[5,6,7]] list2 = list1 id(list1) #比较两个对象的值在内存的id是否一致 140698570735696 id(list2) 140698570735696
判断两个列表是否相等,注:此处的判断是判断两个列表的值是否相等。
list1 == list2 True
将list1进行修改,然后检查list2的值是否发生修改:
先通过list1的最后一个下标获取其值:
list1[4] #获取下标的值 [5, 6, 7] list1[4] = [55,66] #对下标重新赋值 list1 [1, 2, 'a', 'b', [55, 66]] #检查list1和list2的值是否一致 list2 [1, 2, 'a', 'b', [55, 66]] list1 == list2 #再次验证是否一致 True
字典下标操作:
通过下标获取value并进行修改:
dic1 = {1:2,"a":"b"} dic1.setdefault(901,[55]) #setdefault,当有此字典的时候不做任何设置,无此字典则进行添加 [55] #是setdefault的返回值 dic1.fromkeys(range(5),[]) #fromkeys为指定key,并未key指定value从而生成新的字典。 {0: [], 1: [], 2: [], 3: [], 4: []} c = dic1.fromkeys(range(5),[]) #c实例化dic1方法生成的结果 c[1].append({"B":{}}) #c字典进行修改 c[1][0]["B"]["C"] = "END" #获取到c的下标进行修改 print c #显示c的最最终内容 {0: [{'B': {'C': 'END'}}], 1: [{'B': {'C': 'END'}}], 2: [{'B': {'C': 'END'}}], 3: [{'B': {'C': 'END'}}], 4: [{'B': {'C': 'END'}}]} print dic1 {'a': 'b', 1: 2, 901: [55], 902: 'x'}
字典引用:
dic1 = {"k1":"v1","k2":"v2"} #创建一个字典,实例化的步骤 id(dic1) #查看字典在内存的id 140502614443464 dic2 = dic1 #对dic1进行引用 id(dic2) 140502614443464 dic1["k2"] = "v22" #通过字典的key修改其相对应的value,这样是在字典原基础上修改,这样不会影响内存id,如果直接改字典是新建一个新的字典并复制给当前字典,内存id会变化 dic1 {'k1': 'v1', 'k2': 'v22'} dic2 #查看dic1和dic2,发现dic1修改dic2同样进行了修改 {'k1': 'v1', 'k2': 'v22'} id(dic1) # 140502614443464 id(dic2) #再次检查dic1和dic2的内存id并没有变化,因此通过字典的key修改不会影响字典引用和内存id的值 140502614443464 dic1 == dic2 #对比两个字典是否一致 True
字典key和value的循环方法:
对于key和value不是很多的字典,因为本操作会将所要字典全部读取出来并加载到内存最后执行for循环进行遍历找出key和value,速度会慢而且站资源,因此小的字典可以使用简单的for循环,如下: for k,v in dic1.items(): print k,"--->",v 执行结果如下: k2 ---> v22 k1 ---> v1 对于字典比较大的操作,比如几十万上百万行,使用如下方法: for k in dic1: print k,"--->",dic1[k] 执行结果如下: k2 ---> v22 k1 ---> v1
评论关闭