Python 中有六个标准的数据类型:
在 Python 中,变量就是变量,它没有类型.
我们所说的"类型"是变量所指的内存中对象的类型
。
Python3 的六个标准数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
不可变数据(3 个):
Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):
List(列表)、Dictionary(字典)、Set(集合)。
理解:
可变数据和不可变数据是相对于引用地址来说的,不可变数据类型不允许变量的值
发生变化,如果改变了的变量的值,相当于新建了一个对象,而对于相同的值的对象,
内部会有一个引用计数来记录有多少个变量引用了这个对象。可变数据类型允许变量
的值发生变化。对变量进行修改操作只会改变变量的值,不会新建对象,变量引用的
地址也不会发生变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,
即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在
引用计数,是实实在在的对象。
简单地讲,可变数据
和不可变数据
的变
是相对于引用地址
来说的,
不是不能改变其数据,而是改变数据
的时候会不会改变变量的引用地址
。
元组(Tuple)
元组是有序且不可更改
的集合。
元组中的元素不能修改【元素:一旦被初始化,将不能发生改变】
在 Python 中,元组是用圆括号编写的。
创建元组:
创建空元组:tuple1 = ()
创建有的元组:tuple1 = (元素1,元素2,...)
【面试题】
注意:如果元组中只有一个元素,则一定要在元素的后面添加逗号,消除歧义,使其表示的是一个元组
tuple2 = ('abc') # abc <class 'str'>
tuple2 = ('abc',) # ('abc',) <class 'tuple'>
元组是不可变的
tuple1 = (34,6,7,'fahg',True,[34,6,7])
tuple1[0] = 88
# TypeError: 'tuple' object does not support item assignment
【面试题】
注意2:如果元组中的元素是列表,其中的列表仍然可以修改
tuple1 = (34,6,7,'fahg',True,[34,6,7])
tuple1[-1][0] = 88
元组中元素的访问,遍历,切片等都和列表相同
t1 = (4,6,8,9,90,9,9,24,35)
print(len(t1)) #9
print(t1[2]) #8
for num in t1:
print(num)
for i in range(len(t1)):
print(i,t1[i])
print(t1[::-1]) # (35, 24, 90, 9, 8, 6, 4)
print(t1[88:]) # ()
元组没有增删改系统功能,但是有查询的功能
t1 = (4,6,8,9,90,9,9,24,35)
print(len(t1))#9
print(max(t1))#90
print(min(t1))#4
print(t1.index(9))#3
print(t1.count(9))#3
列表和元组之间可以相互转化
l1 = [23,5,6]
print(type(l1))
t1 = tuple(l1)
print(type(t1))
l2 = list(t1)
print(type(l2))
注意
【面试题】注意:如果元组中的元素是列表,其中的列表仍然可以修改
【面试题】注意:如果元组中只有一个元素,则一定要在元素的后面添加逗号,消除歧义,使其表示的是一个元组