什么是元组
python的元组和列表很相似,不同之处在于元组的元素不能被修改,而列表的元素可以被修改,也可以进行分片和连接操作。元组使用小括号创建,列表使用方括号创建。
元组的创建:
代码:
list02=('111','222','333')
print(list02)
操作元组
删除元组
代码:
tuple1=('abcd',123,3.33,'hello')
print("删除之前的元祖:",tuple1)
del tuple1
##print(“删除之后元祖:”,tuple1)
是删除了整个元组,如果加上##print(“删除之后元祖:”,tuple1)会报错。
元组截取用的是方括号students[0:3 ]
元组的元素虽然不能够被改变,但是元组也是一个序列,也可以通过索引去访问和截取元组中指定位置的元素
代码如下:
strdents=('abcd',123,3.33,'hello')
print("截取的元素",strdents[0:3])
输出结果:
截取的元素 (‘abcd’, 123, 3.33)
多维元祖
多维元祖就是元祖中的元祖,元祖中的元素可以是一个新的元祖
代码如下:
strdents=('abcd',(18,78,19),123,3.33,'hello')
print("截取的元素",strdents[0:3])
输出结果:
截取的元素 (‘abcd’, (18, 78, 19), 123)
元组函数
- 计算元祖中元素的个数len()函数
代码:
students=('abcd',(18,78,19),123,3.33,'hello')
num=len(students)
print(num)
输出结果:
5
- 返回列表元素中的最大值max(元组)
- 代码如下:
students=(18,78,19,123,3.33)
num=max(students)
print(num)
输出结果:123
- 将列表转换成元组tuple1=tuple(list01)
list01=['jack','jenny','toy','jack']
print(list01)
tuple1=tuple(list01)
print(tuple1)
输出结果:
['jack', 'jenny', 'toy', 'jack']
('jack', 'jenny', 'toy', 'jack')
**
什么是字典{}—(相当于C++上的结构体)
**
字典是另外一种可变容器类型,且可以存储任意类型对象。列表元素进行修改的话,通过索引进行修改,如果当前元素的顺序发生改变,此时还需要修改索引才能成功完成元素的修改。有没有办法,既能存储多个数据,又能很方便准确的定位元素呢?答:字典
## 字典的创建:
students={'name':'Tome','age':18,'sex':'男'}
print(students)
输出结果:
{‘name’: ‘Tome’, ‘age’: 18, ‘sex’: ‘男’}
## 访问字典
students={'name':'Tome','age':18,'sex':'男'}
print(students['name'])
输出结果:
Tome
## 修改字典元素:
students={'name':'Tome','age':18,'sex':'男'}
students['name']=‘jack’
添加元素
动态的向字典中添加元素的时候,只要添加的键在字典中不存在,就会新增这个元素。在以下字典中添加一个住址信息
代码如下:
students={'name':'Tome','age':18,'sex':'男'}
print(students['name'])
students['address']='北京'
print(students)
输出结果:
Tome
{‘name’: ‘Tome’, ‘age’: 18, ‘sex’: ‘男’, ‘address’: ‘北京’}
删除字典元素
使用del语句删除元素:del既可以删除指定的字典元素(列表也可以指定),也可以删除整个字典,如果不指定key,代表删除整个字典。语法如下:
students={'name':'Tome','age':18,'sex':'男'}
print(students['name'])
students['address']='北京'
print(students)
del students['address']
print(students)
输出结果:
Tome
{‘name’: ‘Tome’, ‘age’: 18, ‘sex’: ‘男’, ‘address’: ‘北京’}
{‘name’: ‘Tome’, ‘age’: 18, ‘sex’: ‘男’}
使用clear()方法清空整个字典,最后剩一个空字典。而用del会删掉的字典程序就不存在了。
字典函数和方法
len函数:计算字典中元素的个数:
代码:
students={'name':'Tome','age':18,'sex':'男'}
print(len(students))
输出结果:3
返回输入变量的数据类型,如果变量是字典就返回<class ‘dict’>
返回变量的数据类型:
代码如下:
students={'name':'Tome','age':18,'sex':'男'}
str1=type(students)
print(str1)
print(students)
key in dict如果键在字典dict里返回true,否则返回false
代码:
students={'name':'Tome','age':18,'sex':'男'}
if 'name' in students:
print("在字典中")
else:
print('不在字典中')
输出结果:
以列表返回一个字典所有的键字典.keys()
代码:
students={'name':'Tome','age':18,'sex':'男'}
print(students.keys())
输出结果:
dict_keys([‘name’, ‘age’, ‘sex’])
浅拷贝
代码:
a=[1,2,3]
b=a
print(a)
print(b)
输出结果a和b一样,a和b指向了同一块地址,是浅拷贝。
**
拷贝原始对象,当原始对象改变时,现对象不变。
代码:
a=[1,2,3]
b=a[:]
print(id(a))
print(id(b))
输出结果:
55129552
55130712
两个内存不同,说明这是深拷贝。
如果是列表的嵌套,那么开辟空间的时候,原始的子列表,不开辟新的空间。
深拷贝—深拷贝是新开辟的空间
代码:
import copy
a=[1,2,3]
b=[4,5,6]
c=[a,b]
print(c)
list01=copy.deepcopy(c)
print(list01)
a[0]=12
print(c)
print(list01)
输出结果“:[[1, 2, 3], [4, 5, 6]]
[[1, 2, 3], [4, 5, 6]]
[[12, 2, 3], [4, 5, 6]]
[[1, 2, 3], [4, 5, 6]]