Python的变量存在两种类型:可变类型和不可变类型。因此,对不同类型变量的赋值存在两种模式:一种浅层次赋值(非绑定赋值);一种深层次赋值(绑定赋值)。(涉及变量的地址和数值,还没弄清楚)
当我们需要使用append函数时,需要注意:新变量的改变会影响整个相关联的变量。
例如:
a=[1,2]
b=a
b.append(3)
print(type(b),a,b)
输出的结果为:
<class ‘list’> [1, 2, 3] [1, 2, 3] 。
在实际应用过程中,会碰到一种情况:不希望变量 a 也随之变化,那么代码如何编写呢?
此时,需要用到上面所说的深层次赋值:copy函数-deepcopy。
实现的代码如下:
import copy
a=[1,2]
b= copy.deepcopy(a)
b.append(3)
print(type(b),a,b)
输出的结果为:
<class ‘list’> [1, 2] [1, 2, 3] 。
据此,代码可以实现原变量不随新变量改变的功能。
在 .append() 和 .extend()的函数中,append实现单独插入的功能,整个空格内的值都作为元素,增加到原list的末尾。
例如:
a=[1,2]
a.append(3)
a
运行:
[1,2,3]
如果:
a=[1,2]
a.append([3])
a
运行:
[1,2, [3] ]
extend()函数,则是实现列表扩展的功能,它对扩展前的数据结构和扩展数据提出一致性的要求,即原始变量和扩展变量一致。
例如:
a=[1,2]
a.extend(3,4)
a
运行报错 。
a=[1,2]
a.extend([3,4])
a
运行:
[1,2,3,4]
append()函数将()内整体数值作为元素,增加到原变量末尾
extend()函数,则要求()内的数据和原变量格式一致