常用数据类型与分类
# Python数据类型
# Int - 整数型
作用
记录为整数的值,如年龄、个数、身份证号等。
定义
变量名 = 整数
等同于:变量名 = int(整数),不加int是python提供的更简便的写法。
例如:test = 123
类型转换
test = "123";
test = int(test)
2
# Float - 浮点型
作用
记录带小数点的值,如薪资、身高、体重等。
定义
变量名 = 浮点数
例如:test = 10.5
类型转换
test = "123.2"
test = float(test)
2
# String - 字符串类型
作用
记录描述性质的一串字符,如名字、一段话等。
定义
'字符串'
或 "字符串"
或 '''字符串'''
或 """字符串"""
用引号包裹字符串即可。
'''和"""三个引号包裹的字符串可以多行定义。
'和"作用一样,可以互换,但如果字符串中要包含"",则可以用''包裹,反之一样,如果都要用到可以使用\转义。
例如:test="123"
字符串的相加相乘
字符串之间可以相加相乘,代表字符串的拼接,但是在需要大量拼接时效率较低,一般不用。
例如:
test="test" + " is"
> "test is"
test="test" + "=" * 3
> "test==="
2
3
4
5
# List - 列表类型
作用
可以按位置记录多个任意类型的值,并且可以通过index索引取出指定位置的值。
以索引对应值,索引从0开始,0代表第一个。
定义
列表名 = [值1,值2,值3...]
在[]内用逗号分隔多个任意类型的值,一个值被称之为一个元素。
例如:test=['read',123,10.5,['aaa','bbb']]
取值
# 取列表的值:列表名[索引]
test[0]
# 取列表中嵌套的列表值:列表名[索引][索引]
test=['read', 1, 1.5, ['aaa','bbb']]
test[3][0]
# 反向取值:列表名[-索引]
test[-1]
2
3
4
5
6
7
8
9
# Dict - 字典类型
作用
用来存多个任意类型的值,字典中每个值都有唯一的key与其对应的值,所以key对值有索引作用。key通常为字符串类型,所以key对值一般也有描述性作用。
key必须是不可变类型,例如:字符串、数字等,不能是列表、字典等。
定义
字典名={键1:值, 键2:值...}
在{}内用逗号分隔开多个键值对。
例如:test={'name':'iro', 'age':18, 'favor':['read','play']}
取值
# 取字典值:字典名[key]
test["name"]
# 取字典中嵌套的字典值:字典名[Key][key]
test={'name':'hhh', 'favor':{'one':'aaa', 'two':'bbb'}}
test['favor']['one']
2
3
4
5
6
# Bool - 布尔类型
作用
用于记录真假这两种状态True和False。
除此之外,也可以用数值0和1来表示真假。
另外布尔类型值的变量名,一般都是以is开头,例如:is_connect等。
显式布尔值
True、False
隐式布尔值
所有类型的值都可以当做条件的布尔值去用。
如10、[1]、"str"等作为布尔值时,都是代表真。
其中只有0、None、空为假,代表False。
空可以是空字符串、空列表、空字典等。
定义
变量名 = 布尔值
如:a = True。
变量名 = 判断条件
如:a = 2 > 3,返回的false作为值。
# Tuple - 元组类型
作用
类似于列表,只不过元组的值不可变,即元组索引对应的内存地址不可变。
按照索引存放多个任意类型的值,但只能用于读,不能用于改。
如果嵌套列表,其嵌套的列表的值是可改的,但一般不会嵌套列表到元组中。
优点
元组由于只需要支持读取,不需要读的支持,所以占用的内存更小。
并且元组进行索引操作的速度相对较快,因此,需要进行大量索引操作的数据尽量存储在元组中。
定义
元组名 = (元素1,)
元组名 = (元素1,元素2...)
如果元组只有一个元素,必须加逗号,不然()会被当做包含,也就不是元组了。
# Set - 集合类型
作用
关系运算,可以找出两个集合中,共同的元素和不同的元素。
去重,集合内没有重复元素,会被自动去重。
集合的元素必须是不可变类型。
集合内元素无序,无法保证原来的顺序。
定义
变量名 = set()
变量名 = {元素1,元素2...}
# Complex - 复数类型
作用
复数类型的基本表达方式是a+bj,其中a代表实部,b代表虚部, j代表复数单位(也就是根号√-1)。
√-1 * √-1 = -1
定义
[变量名] = 实数 + 虚数j
[变量名] = complex(实数, 虚数)
例如:
z = 2 + 3j
、z = complex(2, 3)
复数基本使用
提取复数的实数、虚数:
[复数变量].real
- 提取实数部分,类型浮点数。[复数变量].imag
- 提取虚数部分,类型浮点数。
复数运算:
z1 = 1 + 2j
z2 = 3 + 4j
# 加法运算:将z1和z2的实数相加作为新的实数,虚数相加作为新的虚数。
print(z1 + z2)
>> 4 + 6j
# 减法运算:将z1和z2的实数相减作为新的实数,虚数相减作为新的虚数。
print(z1 - z2)
>> -2-2j
# 乘法运算:(z1.real*z2.real=3) + ((z1.real*z2.imag=4j) + (z1.imag*z2.real=6j)) + (z1.imag*z2.imag=8*j*j=-8) = 3+10j-8 = -5+10j
print(z1 * z2)
>> -5+10j
2
3
4
5
6
7
8
9
10
11
12
13
14
# 类型分类
# 按存值个数区分
原子类型,只能存1个值的类型。例如:数字、字符串。
容器类型,可以存多个值的类型。例如:列表、字典、元组。
# 按照访问方式区分
直接访问,只能通过变量名访问整个值。如:数字。
顺序访问,可以用索引访问指定的值,索引代表顺序,又称为序列类型。例如:字符串、列表、元组。
key访问,可以用key访问指定的值,又称为映射类型。例如:字典。
# 按可变不可变区分
可变类型,例如:列表、字典。
不可变类型,例如:数字、字符串、元组。
# 数字类型
整数类型、浮点数类型、复数类型。
# 可变不可变类型
# 可变类型
修改值后,值改变、但id不变,则证明改变的是原内存空间里的值,这是可变类型。
列表和字典,只会修改索引或key所对应的元素的内存地址指针,且新添加或删除其中的元素,列表或字典本身的id也不会变。所以列表、字典是可变类型。
当然如果直接=号重新赋值,那么id肯定是会变的。
# 不可变类型
修改值后,值改变,且id也变,则证明变量名指向了一个新产生的值,而非改变原内存空间的值,这是不可变类型。
整型、字符串型、浮点型、布尔类型是不可变类型,在Python中被设计为不可分割的整体。