一 python自动化基础能力:3.python基础上之数据类型,函数( 三 )


(5)copy()
浅复制
lis = ['a','b','c','d','e']lst = lis.copy()print(lst)
相当于lst = lis[:]
(6)clear()
清空列表
3.元组 3.1 元组概念
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用“()”列表使用"[]"
3.2 元组操作
t=(1,2,3)print(t[0])修改或者删除元素的话会报错:t[0]= 10删除报错:t.pop()但是可以变向进行删除tuple->list(进行删除操作)->tuple
3.3 可变对象与不可变对象
中,不可变类型包括:
int 、float、 字符串str 、元组tuple、bool 。
可变类型包括:
列表list、集合set、字典dict 。
每个对象在内存中保存了3个数据:
id(标识)
type(类型)
value(值)
举例:
列表a = [1,2,3],在内存中的一定区域,会分别保存一个对象的id(假设为0x111)、type(class list)、value([1,2,3]) 。
对序列中的元素进行改变即对值进行改变 。
修改前:
a = [1,2,3]print(a,id(a))
打印
[1, 2, 3] 1843535938056
改对象后:
a[0] = 10print(a,id(a))
打印
[10, 2, 3] 1843535938056
显然,此时a对象未发生改变 。
改变量后:
a = [4,5,6]print(a,id(a))
打印
[4, 5, 6] 1384044909640
显然,此时a对象发生改变 。
将a赋给新变量b:
a = [1,2,3]b = ab[0] = 10print('a:',a,id(a))print('b:',b,id(b))
打印
a: [10, 2, 3] 1963325084232b: [10, 2, 3] 1963325084232
显示,a和b的值和id完全一致 。
解释:
生成a时,a对应的值为id(假设为0x111)、type(class list)、value([1,2,3]),
将a赋给b时,其实只是将b指向了a对应的内存对象的内存地址,并未分配新的内存空间给b,a和b共用一个内存地址,所以a和b打印出来的结果一致 。
a = [1,2,3]b = ab = [10,2,3]print('a:',a,id(a))print('b:',b,id(b))
打印
a: [1, 2, 3] 2260109775432b: [10, 2, 3] 2260109775944
此时b和a不一致,因为b是通过重新赋值得到的新列表,系统会重新分配一个内存地址,所以id会不同 。
3.4 ==和is
==和!=比较的是对象的值是否相等;
is和is not比较的是对象的id是否相等 。
a = [1,2,3]b = [1,2,3]print(a == b)print(a is b)
打印
TrueFalse
!=和is not的用法类似 。
4.字典 4.1.定义
字典即dict,是一种新的数据结构,也可以叫映射() 。
字典的作用:
存储对象的容器 。
列表存储数据性能很好,但是查询数据性能很差;
字典中每一个元素都有唯一的名字,通过这个名字可以快速查找到指定的元素,这个唯一的名字称为键(key),通过key可以查找到值(value),所以字典也称为键值对(key-value),每个字典可以有多个键值对,每个键值对称为一项 。