数值类型
#数值类型
整型 int
浮点型 float
复数类型 complex 查看实部与虚部的方法a.real a.imag
布尔类型 bool
使用type函数查看数据类型
#整数类型
a = 3
print(type(a))
<class 'int'>
#浮点数类型
a = 3.0
print(type(a))
<class 'float'>
#复数类型
a = 3 + 3j #python中使用j来表示复数
print(type(a))
<class 'complex'>
#布尔类型 bool
a = True
print(type(a))
<class 'bool'>
序列类型
字符串类型 str '' /""/''' '''/ 三种表示字符串的方法
列表类型 list []
元组类型 tuple ()
#字符串类型
a = 'aaa'
print(type(a))
<class 'str'>
#列表类型 列表中的元素放在中括号中,多个元素使用英文逗号分开
#列表中存储的值可以是字符串常量,布尔类型,变量,数值
b = 18 #将18赋值给b
a = ['a',True,b,3]
print(type(a))
<class 'list'>
#元组类型 元组中的元素放在小括号中,多个元素之间使用英文逗号分开
#列表中存储的值可以是字符串常量,布尔类型,变量,数值
b = 18
a = ('a',True,b,3)
print(type(a))
<class 'tuple'>
序列索引
序列索引针对python中的str、list、tuple三种序列类型,python中针对序列的索引有正序索引与逆序索引两种,正序索引是从0开始,即序列的第一个元素,的索引值为0,逆序索引是从-1开始,即序列的最后一个元素的索引值为-1,倒数第二个元素的索引值为-2,首先看一下str类型
a = 'abc'
print(a[0])
print(a[-3])
a
a
print(a[1])
print(a[-2])
b
b
print(a[2])
print(a[-1])
c
c
下面是list类型
a = ['a',True,2]
print(a[0])
print(a[-3])
a
a
print(a[1])
print(a[-2])
True
True
print(a[2])
print(a[-1])
2
2
下面是tuple类型
a = ('a',True,2)
print(a[0])
print(a[-3])
a
a
三种序列类型中list是可变类型,str,tuple是不可变类型,下面来具体看一下什么是可变类型,什么是不可变类型,下面是list类型
#可变类型 list 顾名思义可变类型的元素值是可变的
a = [1,'a',True]
print(a[0])
1
#可以看出列表a的0号元素为整数1,现在对a[0]的值进行修改 并且查看修改后a的情况以及0号元素的值
a[0] = 2
print(a,a[0])
[2, 'a', True] 2
再来看一下str类型,不可变类型
a = 'abcd'
print(a[0])
a
#可以看出列表a的0号元素为字符,现在对a[0]的值进行修改
a[0] = '高'
print(a,a[0])
TypeError Traceback (most recent call last)
<ipython-input-4-2e32327f1d67> in <module>
1 #可以看出列表a的0号元素为字符,现在对a[0]的值进行修改
----> 2 a[0] = '高'
3 print(a,a[0])
TypeError: 'str' object does not support item assignment
可以看出系统报错,这是因为str是不可变类型,它的元素的值不能够直接修改。
再来看一下tuple,不可变类型
a = ('a',True,2)
#首先来查看0号元素的值
print(a[0])
a
#可以看到a的0号元素的值为字符‘a’,然后尝试修改值
a[0] = '高'
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-39-389dd72ad690> in <module>
1 #可以看到a的0号元素的值为字符‘a’,然后尝试修改值
----> 2 a[0] = '高'
TypeError: 'tuple' object does not support item assignment
可以看出系统报错,这是因为tuple是不可变类型,它的元素的值不能够直接修改。此时,若要对元素值进行修改,则需要对数据类型进行强制转换。str类型也一样。
下面示例元组类型与列表类型之间的数据强制转换。
a = ('a',True,2)
#现在想要修改0号元素为数字3,但是此时a是tuple类型,并不支持元素值的修改,所以强制转换为list,并赋值给新的变量b
b = list(a)
#查看b的情况
print(b)
['a', True, 2]
#此时才可以进行修改
b[0] = 3
print(b[0],b)
['a', True, 2]
#此时才可以进行修改
b[0] = 3
print(b[0],b)
3 [3, True, 2]
但是此时我们所看到的只是表象,事实上a的值并没有被修改,只是系统重新开辟了一份空间存储了一个列表,然后对其值进行修改,现在查看a,b的值和类型
print(a,type(a),b,type(b))
('a', True, 2) <class 'tuple'> [3, True, 2] <class 'list'>
对于tuple类型要特别注意当tuple中只有一个元素的情况
#当tuple中只有一个元素时,例如
a = ('b')
此时a的类型并不是tuple,此时默认为str
print(type(a))
<class 'str'>
此时要想定义一个只有一个元素的元组,需要在唯一的一个元素后加逗号
a = ('b',)
print(type(a))
<class 'tuple'>
对于其他情况,当为一的元素为数字且没有逗号时,它的类型为数字的类型
a = (1)
print(type(a))
<class 'int'>
a = (1.0)
print(type(a))
<class 'float'>