内置的数据结构(2)
--------------------------
.传值和传址的区别
.对于简单的数值采用传值操作,即在函数内对参数的操作不影响外面的变量
.对于复杂的变量采用传址操作,此时函数内的参数和外部变量是同一个内容
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)
>>[1,2,3,4,5,6]
[1,2,300,4,5,6]
[1,2,300,4,5,6]
9
100
9
----------------------------
-关于列表的函数
l=['a','love harbin',5+4j]
append插入一个内容,在末尾追加
l.append(100)
l.insert(index,value)
pop()从列表中拿走最后一个元素
l1=a.pop()l1就是删除的元素
remove在列表中删除指定值的元素
如果删除的元素不在列表那么就报错,删除list指定值操作应该使用try--eccepty语句,或者先行判断
if x in list:
list.remove(x)
a.remove(100)
clear()清空
l.clear()
reverse()原地反转
l.reverse()
extend()扩展两个列表,把一个直接拼接到后一个上
a=[1,2,3]
b=[4,5,6]
a.extend(b)
print(a)
>>[1,2,3,4,5,6]
count:查找列表中指定值或者元素的个数
a=[1,2,3,4,4,4,5,5,]
a_len=a.count(4)
>>a_len=3
copy:拷贝,浅拷贝
list类型之间直接赋值传递的是地址
b=a.copy()此时两个列表的地址不再指向同一个地址
深拷贝和浅拷贝的区别
a1=[1,2,3,[10,20,30]]
b=a.copy()
id(a[3])和id(b[3])是一致的,这就是浅拷贝,只拷贝了已成
深拷贝需要使用特定工具
-------------------------------
-元组-tuple
元组可以看成一个不可以更改的list
创建空元组
t=()
创建只含有一个元素的元组
t=(1,)
创建多个值的元组
t=(1,2,3,4,5)
t=1,2,3,4,5
使用其他结构构建
l=[1,2,3,4,5]
t=tuple(l)
-元组的特性
是序列表
元组数据的值可以访问,不能修改
元组数据是可以的任意类型
总之list所有的特性除了可以修改外,元组都具有
索引操作
t=(1,2,3,4)
print(t[3])
切片的操作
t=(1,2,3,4,5,6)
t1=t[1::2]
print(t1)
>>(2,4,6)
序列相加
t1=(1,2,3)
t2=(4,5,6)
t1=t1+t2
print(t1)
>>(1,2,3,4,5,6)---t1的id已经改变
元组相乘
t=t1*3
>>(1,2,3,1,2,3,1,2,3)
成员检测
t=(1,2,3)
if 2 in t:
print('yes')
else:
print('none')
元组遍历,一般采用for
单层元组遍历
for i in t:
print(i,end='')
双层元组的遍历
t=((1,2,3),(2,3,4),('I','love','harbin'))
for i in t:
print(i)
for k,m,n in t:
print(k,'---',m,'---',n)
>>1 --- 2 --- 3
2 --- 3 --- 4
--------------------------
.传值和传址的区别
.对于简单的数值采用传值操作,即在函数内对参数的操作不影响外面的变量
.对于复杂的变量采用传址操作,此时函数内的参数和外部变量是同一个内容
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)
>>[1,2,3,4,5,6]
[1,2,300,4,5,6]
[1,2,300,4,5,6]
9
100
9
----------------------------
-关于列表的函数
l=['a','love harbin',5+4j]
append插入一个内容,在末尾追加
l.append(100)
l.insert(index,value)
pop()从列表中拿走最后一个元素
l1=a.pop()l1就是删除的元素
remove在列表中删除指定值的元素
如果删除的元素不在列表那么就报错,删除list指定值操作应该使用try--eccepty语句,或者先行判断
if x in list:
list.remove(x)
a.remove(100)
clear()清空
l.clear()
reverse()原地反转
l.reverse()
extend()扩展两个列表,把一个直接拼接到后一个上
a=[1,2,3]
b=[4,5,6]
a.extend(b)
print(a)
>>[1,2,3,4,5,6]
count:查找列表中指定值或者元素的个数
a=[1,2,3,4,4,4,5,5,]
a_len=a.count(4)
>>a_len=3
copy:拷贝,浅拷贝
list类型之间直接赋值传递的是地址
b=a.copy()此时两个列表的地址不再指向同一个地址
深拷贝和浅拷贝的区别
a1=[1,2,3,[10,20,30]]
b=a.copy()
id(a[3])和id(b[3])是一致的,这就是浅拷贝,只拷贝了已成
深拷贝需要使用特定工具
-------------------------------
-元组-tuple
元组可以看成一个不可以更改的list
创建空元组
t=()
创建只含有一个元素的元组
t=(1,)
创建多个值的元组
t=(1,2,3,4,5)
t=1,2,3,4,5
使用其他结构构建
l=[1,2,3,4,5]
t=tuple(l)
-元组的特性
是序列表
元组数据的值可以访问,不能修改
元组数据是可以的任意类型
总之list所有的特性除了可以修改外,元组都具有
索引操作
t=(1,2,3,4)
print(t[3])
切片的操作
t=(1,2,3,4,5,6)
t1=t[1::2]
print(t1)
>>(2,4,6)
序列相加
t1=(1,2,3)
t2=(4,5,6)
t1=t1+t2
print(t1)
>>(1,2,3,4,5,6)---t1的id已经改变
元组相乘
t=t1*3
>>(1,2,3,1,2,3,1,2,3)
成员检测
t=(1,2,3)
if 2 in t:
print('yes')
else:
print('none')
元组遍历,一般采用for
单层元组遍历
for i in t:
print(i,end='')
双层元组的遍历
t=((1,2,3),(2,3,4),('I','love','harbin'))
for i in t:
print(i)
for k,m,n in t:
print(k,'---',m,'---',n)
>>1 --- 2 --- 3
2 --- 3 --- 4
I --- love --- harbin
----------------------------------------------------------------------------
今天的python的学习笔记先记到这里,固然有很多不足,还希望大家多多指正。