VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python3 >
  • python六大数据类型

六大数据类型

# python的六大数据类型是Number(四种数字类型) + 五种容器类型

1、Number数字类型
int 整型(整数)
float 浮点型(小数)
bool 布尔型(布尔值)
complex 复数
long 大整型(长整型,无限大,python3.X中淘汰,原因:科技、计算机的发展使内存廉价)

2、container容器类型
str 字符串
list 列表
tuple 元组
set 集合
dict 字典

数字类型数据

int 整型

什么是整型

整型指的就是整数,包括正整数、0、负整数

如何定义整型
# 直接输入整数,整数是没有小数点的数,只要有小数点,就不算是整型
# 在定义变量时直接赋值整数,变量的类型就成为整型
intvar = 100	# 整数
print(intvar, type(intvar))
intvar = 100.00	# 不算整数(浮点数)
print(intvar, type(intvar))

# 使用int函数,也就是空的整型
intvar = int()	# 默认为0
print(intvar, type(intvar))
其它进制整型的表示方法
# 二进制、八进制、十六进制数:在表示这些数字的时候分别在数字前冠以0b、0o、0x的前缀表示。

# 二进制数
intvar1 = 0b101010101
# 八进制数
intvar2 = 0o713211230
# 十六进制数
intvar3 = 0xabcdef123
# print打印的数据显示十进制数
print(intvar1, intvar2, intvar3)

float 浮点型

什么是浮点型

浮点型指的就是小数

如何定义浮点型
# 1、直接写小数
fltvar = 100.1
print(fltvar, type(fltvar))

# 2、科学计数法
# E表示小数点的位置,1.E2表示小数点向右移动两位,位数不够用0补位,1E-1反之。
fltvar1 = 1.E2 + 1E-1
print(fltvar1, type(fltvar1))

# 3、使用函数float,空的浮点数
fltvar2 = float()
print(fltvar2, type(fltvar2))

什么是科学计数法

科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式
(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。
当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。

概念:
把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。
例如:19971400000000=1.99714×10^13。
计算器或电脑表达10的幂是一般是用E或e,
也就是1.99714E13=19971400000000

bool 布尔值

什么是布尔型

在计算机上布尔型代表逻辑上的真假,布尔值的值只有两种,, TrueFalse

在python中,乃至计算机科学当中,任何的东西的本质都是True和False,都是非真既假的,这也就是也和计算机的工作原理分不开,比如计算机当中使用二进制来进行工作,都是只有两种形态来表示的。

如何定义布尔值
# 1、直接输入true或false
# 注意,python中的true和false首字母是大写的
bolvar1 = True		# 真
bolvar2 = False		# 假
print(bolvar1, type(bolvar1))
print(bolvar2, type(bolvar2))

# 2、使用bool函数,默认为false
boolvar = bool()
print(boolvar)

complex 复数

什么是复数

复数是由实数和虚数组成的数,J 表示的是一个平方为-1的数,应为这样的数在实际当中不存在所以用 J 表示,简单的来说,复数就是实数+虚数

j  :如果有一个数,它的平方等于-1,那么这个数就是j,科学家认为有表达高精度类型。
如何定义复数
# 1、直接写复数
cpxvar = 4j
cpxvar1 = 1+4j
cpxvar1 = -4j

# 使用函数complex()
cpxvar2 = complex(10, 20)

容器类型数据

# 说明:容器类型数据当中可以存放任何类型的数据,二级及以上的容器有特殊情况

# 字符串容器较为特殊,str当中可以可以存放任何数据的类型,但是任何数据的类型都会变为str

str 字符串

什么是字符串

字符串就是用引号引起来的字符,不管引号内是什么数据,只要在引号内就是字符串。

字符串特点

可获取、不可修改、有序

定义字符串
# 使用引号引起来的东西都是字符串,无论是什么东西,包括所有的引号类型,比如多行注释

# 1、直接使用引号
# 使用各种各样的引号都是字符串
strvar = 'hello motherland'
strvar1 = "hello my motherland"
# 使用三引号可以跨行,并且要定义变量接受,否则就只是一段注释
strvar2 = '''
hello motherland
'''
strvar3 = """
hello 
my
motherland
"""
print(strvar, type(strvar))
print(strvar1, type(strvar1))
print(strvar2, type(strvar2))
print(strvar3, type(strvar3))

# 即使是其它的数据类型也是字符串
strvar = '100'	# 引号中是整型
print(strvar, type(strvar))

# 定义空字符串,使用str函数 或者是空引号
strvar, strvar2 = str(), ''
print(type(strvar), type(strvar2))
获取字符串中的数据
# python中字符串也存在正逆向下标
strvar = 'hello motherland'
res = strvar[-1]
print(res)
res = strvar[1]
print(res)

# 字符串是不可修改的
# 修改字符串其中的某一个元素
# strvar[-1] = 'm'		# error 报错

list 列表

什么是列表

就是其他语言当中的数组

特点

可获取、可修改、有序

定义列表
# 列表中可以存放一切数据,使用中括号包括,使用逗号分隔不同的数据

# 直接定义
msr = 'hello motherland'	# 字符串变量
lstvar = [123'hello china', msr]	# 可以存放整型,字符串,变量等一切合法的数据类型
print(lstvar, type(lstvar))

# 定义空列表
lstvar, lstvar2 = list(), []
获取列表容器当中的元素

容器当中的每个元素都有按顺序对应的正逆向下标索引,如果要获取容器当中的某个元素,可以按照下标索引来获取。

''' 正向下标索引:   0     1     2     3     4 '''
lstvar =          [1,    2,    3,    4,    5]
''' 逆向下标索引:  -5    -4    -3    -2     -1  '''

# 获取第一个元素
res = lstvar[0]

# 逆向下标是Python特有,可以快速获取容器中的最后一个元素
res = lstvar[-1]

# 没有逆向下标怎么获取最后一个数据元素
# 各语言获取最后一个元素的通用写法,获取长度,然后减一,以为下标是从0开始的
res = len(lstvar)   # 得到元素数量
res = lstvar[res - 1]  # 下标从0开始,所以减1
print(res)

# 修改元素数据,list数据是可以修改的
lstvar = [1, 2, 3]
lstvar[-1] = 'msr'
print(lstvar[-1])

tuple 元组

特点

可获取、不可修改、有序

定义元组
# 元组是使用逗号分隔开的一个个数据,一般情况下,都会使用小括号,但是小括号不是必须的
tupvar = (1,2,3,4,5)
print(tupvar, type(tupvar))

# 逗号是元组的标识符,只要有逗号,即使只有一个元素,没有括号都可以定义
# 使用这些方式定义后的数据类型都是元组类型的
tupvar = (1,)
tupvar = 1, 2
tupvar = 1,

# 定义一个空元组
# 单单一个括号就是一个元组类型的数据
tupvar = ()
tupvar1 = tuple()
print(tupvar, tupvar1)
print(type(tupvar), type(tupvar1))
获取元组中的数据
# 元组也存在正逆向下标

tupvar = (1,2,3,4,5)

# 获取元组的元素数据
res = tupvar[-1]
print(res)

# 元组的元素不可以更改
# tupvar[-1] = 'qwe'    # error 不能修改

set 集合

特点

可获取、不可修改、无序、自动去重

定义集合
# 集合是使用大括号包围,使用逗号分隔数据的的一种数据形式

# 定义普通的集合
setvar = {1, 2, 3, 4, 5}

# 使用set函数定义集合
setvar = set()

# 定义一个空集合
# 注意:集合不可以直接使用大括号定义空集合,大括号定义的是字典
setvar, setvar1 = set(), {}
print(setvar, type(setvar), setvar1, type(setvar1))
作用

集合之间的交差互补

# 1、自动去重:集合会自动的将容器中的重复的数据自动删除
setvar = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4}
print(setvar)
# 打印之后的数据
{1, 2, 3, 4}

# 2、集合是无序的:重复刷新会发现打印出来的元素顺序是不确定的
setvar = {'1', '2', '3'}
print(setvar)
# 多次打印
{'1', '2', '3'}
{'1', '3', '2'}
{'3', '1', '2'}

# 自动去重之后的集合也是无序的,但是如果集合当中是纯数字的话,是按照数字大小排序的
setvar = {1, 23, 4, 5, 6, 7, 8, }
print(setvar)
setvar = {True, False, True}
print(setvar)
setvar = {1, 23, 4, 5, True, 6.123412, 7, 8, False}
print(setvar)
获取集合中的数据
# 因为集合无序,所以集合没有下标索引,所以既不能获取单个元素,也不能修改。
setvar = {'1', '2', '3', '1', '2', '3', '1', '2', '3'}

# 获取集合当中的某一个元素
# res = setvar[-1]    # error 错误

# 也不能修改,以为根本获取不到要修改的那个数据
setvar[-1] = '1234'    # error 错误

dict 字典

什么是字典

字典就是其他语言当中的自定义对象。

特点

利用键存储数据、可获取、可修改、表面有序、实际无序

定义字典
# 语法:{key1:value1, key2:value2, ...}

# 定义空字典
ditvar, ditvar2 = dict(), {}

# 定义一个普通的字典
ditvar = {'及时雨':'宋江', '玉麒麟':'卢俊义', '智多星':'吴用', 'Python小白':'小白白'}
print(ditvar, type(ditvar))
获取和修改字典数据
# 字典使用键存储数据,所以获取字典中的元素要寻找它对应的键,修改也是如此。
ditvar = {'及时雨':'宋江', '玉麒麟':'卢俊义', '智多星':'吴用', 'Python小白':'小白白'}

# 获取和修改字典中的元素
# 获取数据
res = ditvar['智多星']
print(res)

# 修改数据(根据字典中已有的键修改)
ditvar['Python小白'] = '小黑'
print(ditvar)

# 在字典中添加键和值(其实也就是修改值)
ditvar[1] = 1		# 在字典中添加一个1的键,值是1
print(ditvar[1])


# 注意字典的键是唯一的,当字典中出现两个相同的键时,键取后面的键所对应的值
# 字典的键是唯一的
dicvar = {1: 2, 1: 3}
print(dicvar)

字典的键和集合的值

数据类型的要求
# 集合的值和字典的键必须是可哈希的数据类型(不可变数据)

字典的键和集合的值对数据类型是有要求的,只能是Number、strtuple的类型的数据,字典的值对数据类型没有要求,只要是合法的python数据类型就可以

# 在实际的工作当中,我们对字典的要求更高,python中键的命名虽然满足上述的几个要求即可系统的执行,但是我一般会要求字典的键的命名和变量名的命名是一样的要求。

"""
字典的键 和 集合中的值 数据类型的要求必须是如下几种:
如下类型可以: 

不可变数据(可哈希的数据类型) 有序
Number(int, float, bool, complex), str, tuple

不允许的类型:
可变数据(不可哈希的数据类型) 无序
list, set, dict
"""
但凡提到哈希算法(hash),都是典型的无序特征
目的: 为了更加均匀的把数据分配到内存里,底层用的算法类似于取模.

python3.6版本之后,字典做了优化,储数据的时候用哈希算法但是在拿出数据的时候,新按照定义字典时的顺序进行重新排序所以看起来有序,际上无序。

容器类型总结

数据类型 是否可获取 是否有序 是否可以修改其中元素
str 字符串 可获取 有序 不可修改
list 列表 可获取 有序 可修改
tuple 元组 可获取 有序 不可修改
set 集合 不可获取 无序 可修改(不可手动修改,来回变化也是改变)
dict 字典 可获取 看似有序、实际无序 可修改


相关教程