#传值和传地址的区别#对于简单值,采用传值操作,即函数中参数的操作不影响外部变量#对于复杂变量,采用传地址操作,此时time,函数内的参数和外部变量的内容是一样的,#这个内容的任何改动都会影响其他变量或参数的使用defa(n):n[2]=300print(n)returnNonedefb(n):n+=100print(n)返回Nonean=[1,2,3,4,5,6]bn=9print(an)a(an)print(an)print(bn)b(bn)print(bn)[1,2,3,4,5,6][1,2,300,4,5,6][1,2,300,4,5,6]91099关于列表的函数l=['a','我爱你',45,766,5+4j]l['a','我爱你',45,766,(5+4j)]#append插入一个内容,appenda=[iforiinrange(1,5)]print(a)a.append(100)print(a)[1,2,3,4][1,2,3,4,100]#插入:插入指定位置#insert(index,date),插入位置在index之前print(a)a.insert(3,666)print(a)[1,2,3,4,100][1,2,3,666,4,100]#delete#delDelete#pop,从对应位置取出一个元素,即就是,取出最后一个元素print(a)last_ele=a.pop()print(last_ele)print(a)[1,2,3,666,4,100]100[1,2,3,666,4]#remove:删除列表中指定值的元素#如果要删除的值不在列表中,会报错#即删除List的指定值的操作,应该使用try...except语句,或者先做判断#ifxinlist:#list.remove(x)a.insert(4,666)print(a)print(id(a))a.remove(666)打印(a)print(id(a))#输出两个相同的id值,表示remove操作直接对原列表进行操作[1,2,3,4,666]2261435601928[1,2,3,4]2261435601928#clear:clearprint(a)print(id(a))a.clear()print(a)print(id(a))#如果不需要列表地址不变,可以使用以下方法清除列表#a=list[]#a=[][]2261435601928[]2261435601928#reverse:flip,flipinplacea=[1,2,3,4,5]print(a)print(id(a))a.reverse()print(a)print(id(a))[1,2,3,4,5]2261441839496[5,4,3,2,1]2261441839496#exrend:扩展列表,两个列表,一个直接拼接在后者上面a=[1,2,3,4,5]b=[6,7,8,9,10]print(a)print(id(a))a.extend(b)print(a)print(id(a))[1,2,3,4,5]2261441540872[1,2,3,4,5,6,7,8,9,10]2261441540872#count:在列表Number中查找指定的值或元素print(a)a.append(8)a.insert(4,8)print(a)a_len=a.count(8)print(a_len)[1,2,3,4,5,6,7,8,9,10][1,2,3,4,8,5,6,7,8,9,10,8]3#copy:copy,shallowcopy#list类型变量赋值例子a=[1,2,3,4,5,666]print(a)#list类型,简单的赋值操作,就是传地址b=ab[3]=777print(a)print(id(a))print(b)print(id(b))print("*"*20)#为了解决以上问题,列表赋值需要使用复制函数b=a.copy()print(a)print(id(a))print(b)print(id(b))print("*"*20)b[3]=888print(a)print(b)[1,2,3,4,5,666][1,2,3,777,5,666]2195797555400[1,2,3,777,5,666]2195797555400*********************[1,2,3,777,5,666]2195797555400[1,2,3,777,5,666]2195798283976********************[1,2,3,777,5,666][1,2,3,888,5,666]#深copy和shallowcopy的区别#出现下面问题的原因是copy函数是shallowcopy函数,即只复制一层内容#deepcopy需要特定的工具a=[1,2,3,[10,20,30]]b=a.copy()打印(id(a))打印(id(b))打印(id(a[3]))打印(id(b[3]))a[3][2]=666print(a)print(b)2195798054792219579642029621957981088722195798108872[1,2,3,[10,20,666]][1,2,3,[10,20,666]]元组可以被视为一个Unchangeablelisttuplecreation#创建一个空元组t=()print(type(t))#创建一个只有一个值的元组s=(1)print(type(s))print(s)t=(1,)print(type(t))print(t)t=1,print(type(t))print(t)#创建多个值的元组t=(1,2,3,4,5)print(type(t))print(t)t=1,2,3,4,5print(type(t))print(t)#使用其他结构创建l=[1,2,3,4,5]t=tuple(l)print(t)
