传值和传地址的区别
对于简单的数值采用传值操作,即在函数内对函数参数的操作不影响外面的变量 对于复杂的变量,采用传地址,此时函数内的参数和外部参数是同一份内容,任何地方更改,另一份数据也会改变。
#in[1]
def a(n):
n[2]=300
print(n)
return None
def b(n):
n+=100
print(n)
return None
an=[1,2,3,4,5,6]
bn=9
print(an)
a(an)
print(an)
print(bn)
b(bn)
print(bn)
#out[1]
[1, 2, 3, 4, 5, 6]
[1, 2, 300, 4, 5, 6]
[1, 2, 300, 4, 5, 6]
9
109
9
关于列表的函数
#in[2]
#append 插入
#在末尾追加
a=[i for i in range(1,6)]
print(a)
a.append(100)
print(a)
#out[2]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 100]
#in[3]
#insert(index,data) 指定位置插入
a=[i for i in range(1,6)]
print(a)
a.insert(2,9)
print(a)
#out[3]
[1, 2, 3, 4, 5]
[1, 2, 9, 3, 4, 5]
#in[4]
#del 删除
#pop,把最后一个元素取出来
a=[i for i in range(1,6)]
print(a)
del a[2]
print(a)
a.pop()
print(a)
#out[4]
[1, 2, 3, 4, 5]
[1, 2, 4, 5]
[1, 2, 4]
#in[5]
'''
remove:在列表中删除指定的值元素
如果被删除的值没在List中则报错
即,删除指定list中的值,首先要进行判断
'''
a=[i for i in range(1,10)]
a.insert(3,666)
print(a)
a.remove(666)
print(a)
#out[5]
[1, 2, 3, 666, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
#in[6]
#clear:清空
a=[i for i in range(1,60)]
print(a)
a.clear()
print(a)
#out[6]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
[]
#in[7]
#reverse:翻转
a=[i for i in range(1,6)]
print(a)
a.reverse()
print(a)
#out[7]
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
#in[8]
#extend:合并两个列表
a=[i for i in range(1,3)]
b=[4,5,6]
print(a)
print(b)
c=a+b
print(c)
a.extend(b)
print(a)
#out[8]
[1, 2]
[4, 5, 6]
[1, 2, 4, 5, 6]
[1, 2, 4, 5, 6]
#in[9]
#count:查找列表中指定值或元素的个数
a=[i for i in range(1,9)]
a.append(8)
a.insert(4,8)
print(a)
a_len=a.count(8)
print(a_len)
#out[9]
[1, 2, 3, 4, 8, 5, 6, 7, 8, 8]
3
#in[10]
#copy:拷贝,浅拷贝
#一般情况
a=[i for i in range(1,10)]
print(a)
b=a
print(b)
b[3]=777
print(a)
print(b)
print('*'*30)
#使用copy
c=[i for i in range(1,10)]
print(c)
d=c.copy()
print(d)
d[3]=666
print(c)
print(d)
#out[10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 777, 5, 6, 7, 8, 9]
[1, 2, 3, 777, 5, 6, 7, 8, 9]
******************************
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 666, 5, 6, 7, 8, 9]
#in[11]
#深拷贝和浅拷贝的区别
#copy只是浅拷贝,进行内容拷贝
a=[1,2,3,[10,9,8]]
b=a.copy()
print(id(a))
print(id(b))
print(id(a[3]))
print(id(b[3]))
a[3][2]=666
print(a)
print(b)
#out[11]
2157529918472
2157529918344
2157529927816
2157529927816
[1, 2, 3, [10, 9, 666]]
[1, 2, 3, [10, 9, 666]]
元组Tuple
元组创建
#in[12]
#创建空元组
t=()
print(type(t))
#创建一个只有一个值的元组
t=(1,)
print(type(t))
#创建一个多个值的元组
t=(1,2,3,4,5,6)
print(type(t))
#out[12]
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
元组的特性
是序列表有序 元组数据值可以访问不能修改 元组数据可以是任意类型 List所有性质,除了修改,元组都具有,也就意味着比如索引,分片,序列相加,成员资格操作一模一样。