(一) Number数字类型
整数类型(int)
int 整型(正整数 0 分整数)
type 获取一个值的类型
#案例1:正整数
int_var1 = 1 #正整数
print(int_var1,type(int_var1))
#案例2:定义变量为0的整数
int_var2 = 0 #0
print(int_var2,type(int_var2))
#案例3:负整数
int_var3 = (-1) #负整数
print(int_var3,type(int_var3))
浮点数类型(float)
float:正浮点数 负浮点数
#案例1:正浮点数
float_var1 = 1.2 #正浮点整数
print(float_var1,type(float_var1))
#案例2:负浮点数
float_var2 = (-1.3) #负浮点数
print(float_var2,type(float_var2))
布尔类型(bool)
bool: 真(True) 假(False)
#案例1:真(True)
a = 10
b = 5
res = a > b
print(res,type(res))
#运行结果返回:True <class 'bool'>
#案例2:假(False)
a = 10
b = 5
res = b > a
print(res,type(res))
#运行结果为:False <class 'bool'>
复数类型(comolex)
复数(complex): 实数 + 虚数
例:4 + 3j
4是实数
3j是虚数
#案例1:
complex_var = 3-2j
print(complex_var)
print(type(complex_var))
#运行结果:
(3-2j)
<class 'complex'>
#案例2:complex(实数,虚数)
complex_var = complex(3,-2)
print(complex_var)
print(type(complex_var))
#运行结果:
(3-2j)
<class 'complex'>
#案例3:只有虚数,没有实数
comple_var = 4j
print(comple_var)
print(type(comple_var))
#运行结果:
4j
<class 'complex'>
(二) 容器类型分类:
字符串(str):
- 字符串的概念:用引号(""或'')引起来的就是字符串.
- len 获取容器类型数据的长度,元素的总个数
(1)单引号字符串
str_var = '51自学Python'
print(str_var,type(str_var))
#运行结果:
51自学Python <class 'str'>
(2)双引号字符串
str_var1 = "文能提笔安天下,武能上马定乾坤."
print(str_var1,type(str_var1))
#运行结果:
文能提笔安天下,武能上马定乾坤. <class 'str'>
(3)三引号字符串(支持跨行操作)
msg = """
文能提笔安天下,
武能上马定乾坤.
"""
print(msg,type(msg))
#运行结果:
文能提笔安天下,
武能上马定乾坤.
<class 'str'>
(4)元字符串r"字符串"不转义字符,原型化输出字符串
str_var = r"E:文档2019年python全栈"
print(str_var)
#运行结果:
E:文档python全栈
(5)字符串,可获取,不可修改,有序
#正向索引 0 1 2 3 4 5 6 7 8 9
str_var = "黑夜给我了黑色的眼睛"
#反向索引-10-9-8-7-6-5-4-3-2-1
#案例1:
res = str_var[1]#正向索引
print(res)
#运行结果:
夜
#案例2:
res = str_var[-2]#反向索引
print(res)
#运行结果:
眼
列表类型(list):列表可获取,可修改,有序.
(1)定义空列表
list_var = []
print(list_var,type(list_var))
#运行结果:
[] <class 'list'>
(2)索引取值
# 1.获取列表里面的值
# 0 1 2 3 4 5 6 7
list_var = [11,22,33,44,55,66,"aa","bb"]
res = list_var[1]#正向取值
print(res)
#运行结果:
22
# 获取最后一个值 (python特有) res => result
list_var = [11,22,33,44,55,66,"aa","bb"]
# -8 -7 -6 -5 -4 -3 -2 -1
res = list_var[-1]#逆向索引
print(res)
#运行结果:
bb
(3)修改列表里面的值
list_var = [11,22,33,44,55,66,"aa","bb"]
list_var[-1] = 88
print(list_var)
#运行结果:
[11, 22, 33, 44, 55, 66, 'aa', 88]
元组类型(tuple):可获取,不可修改,有序
(1)定义一个空元组
tuple_var = ()
print(tuple_var,type(tuple_var))
#运行结果:
() <class 'tuple'>
(2)逗号是元组的标志性符号,如果想要表达空元组,可以用();
tuple_var = (1,)
print(tuple_var,type(tuple_var))
#运行结果:
(1,) <class 'tuple'>
(3)索引获取元组里面的值
# 0 1 2 3
tuple_var = ("aa","bb","cc","dd")
# -4 -3 -2 -1
print(tuple_var,type(tuple_var))
print(tuple_var[1])
#运行结果:
('aa', 'bb', 'cc', 'dd') <class 'tuple'>
bb
集合(set):集合类型作用:交差并补,操作无序,自动去重
set_var = {"唐僧","悟空","八戒","沙僧"}
print(set_var)
(1) 是否可以获取集合中的值?不可以
set_var = {"唐僧","悟空","八戒","沙僧"}
print(set_var[0])
#运行结果:
TypeError: 'set' object does not support indexing
(类型错误:“set”对象不支持索引)
(2) 是否可以设置集合中的值?不可以
set_var = {"唐僧","悟空","八戒","沙僧"}
set_var[0] = 1
print(set_var)
#运行结果:
TypeError: 'set' object does not support item assignment
(类型错误:“set”对象不支持项分配)
(3) 可以自动去重
set_var = {"唐僧","悟空","八戒","沙僧","悟空","八戒"}
print(set_var)
#运行结果:
{'唐僧', '悟空', '八戒', '沙僧'}
(4) 定义空集合
set_var = set()
print(set_var,type(set_var))
#运行结果:
set() <class 'set'>
字典(dict):由键值对存储的数据,字面上有序,本质上无序
语法:
dic_var = {"键1":"值1","键值2":"值2"}
由键值对存储数据,左边是键,右边是值,键值之间用冒号隔开.
3.6版本之前都是 字典和集合都是无序的
3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,
根据字面顺序重新排序,所以看起来像有序,但本质上无序
dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"}
print(dict_var)
获取字典当中的值
dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"}
print(dict_var["罗贯中"])
修改字典当中的值
dict_var = {"罗贯中":"三国演义","曹雪芹":"红楼梦","施耐庵":"水浒传","吴承恩":"西游记"}
dict_var['曹雪芹'] = "石头记"
print(dict_var)
结论:
字典当中的键和集合当中的值,底层都是通过哈希算法出来的;
但凡使用了哈希算法,那么这个数据就是散列无序的,因为要把数据均匀的分布存储在内存当中,减少哈希碰撞
可哈希数据:Number(int float bool complex) str tuple 不可变的数据.
不可哈希的数据:list set dict
定义字典的语法是允许的,但是不要使用,定义字典的键,一般按照变量名的方式定义字符串.
集合的值也必须可哈希(不可变数据)
但凡是不可哈希的数据都不能作为集合的值
setvar = {1,9,"abc",(1,2,3),[1,2,3]} #error
setvar = {1,9,"abc",(1,2,3,[1,2,3]) } #error
print(setvar)