002.Python数据类型
一 python语言注释
就是对代码的解释, 方便大家阅读代码用的
1.1 注释的分类
(1)单行注释 # print 在python2.x print "1" # print 在python3.x print("1") (2) 多行注释 : ‘‘‘ ‘‘‘ """ """ ‘‘‘ print("abc") print("abcd") print("abcde") print("abcdef”) ‘‘‘ """ print("abc") print("abcd") print("abcde") print("abcdef”) """
1.2 嵌套注释
注释嵌套的时候,如果外面是三个三引号,里面用三个双引号如果外面是三个双引号,里面用三个单引号.
‘‘‘ print("abc") print("abcd") """ print("edc") """ print("abcde") print("abcdef”) ‘‘‘
注释的排错性
注释一部分代码,执行另外一部分,查看报错
二 python变量
2.1 变量的声明
[ python]# vi test.py
# 方法一 a = 1 b = 2 print(a) print(b) # 方法二 a,b = 3,4 print(a,b) # 方法三 a = b = 5 print(a,b)
[ python]# python3 test.py
1 2 3 4 5 5
2.2 变量的命名规则
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
- 慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。
[ python]# vi test.py
# import 引入 keyword 模块名 import keyword # 模块名.属性 kwlist 可以打印出所有的关键字 res = keyword.kwlist print(res)
[ python]# python3 test.py
[‘False‘, ‘None‘, ‘True‘, ‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘nonlocal‘, ‘not‘, ‘or‘, ‘pass‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
2.3 变量的交换
通用的交换写法
a = 11 b = 12 tmp = a a = b b = tmp print(a,b)
python写法
[ python]# vi test.py
a = 11 b = 12 a,b = b,a print(a,b)
[ python]# python3 test.py
12 11
三 Python的六大数据类型
数值类型Number( int float bool complex)
(1) Number数字类型( int float boo1 compplex)
(2) string字符串类型
(3) List列表类型
(4)Tuple元组类型
(5)Set集合类型
(6)Dict
字典类型
->(1)Number数字类型分类
int: 整数类型(正整数【各种进制】负整数0)
folat:浮点数类型(1普通小数2科学计数法表示的小数例:a=3e-5 #3e-05)
bool:布尔值类型(真True和假 false)
compex:复数类型(声明复数的2种方法)(复数用作于科学计算中,表示高精度的数据,科学家会使用)
3.1 整型
[ python]#vim test.py
# int 整型 (正整型 0 负整型) intvar = 133 print(intvar) # type 获取一个变量的类型 type(值) res = type(intvar) print(res) # id 获取该变量所指向值的地址 id(值) res = id(intvar) print(res) # 打印二进制 intvar = 0b101 print(intvar) print(type(intvar)) print(id(intvar)) # 打印八进制 intvar = 0o127 print(intvar) print(type(intvar)) print(id(intvar)) # 打印十六进制 intvar = 0Xff print(intvar) print(type(intvar)) print(id(intvar))
[ python]# python3 test.py
133 <class ‘int‘> 140050073843520 5 <class ‘int‘> 140050073839424 87 <class ‘int‘> 140050073842048 255 <class ‘int‘> 140050073847424
3.2 浮点型float
# 表达一 floatvar = 3.15 print(floatvar,type(floatvar)) # 表达二 floatvar = 5.35e-3 floatvar = 7.34e5 print(floatvar,type(floatvar)
[ python]# python3 test.py
3.15 <class ‘float‘> 734000.0 <class ‘float‘>
3.3 布尔型(True 真的 False 假的)
boolvar = True boolvar = False print(boolvar,type(boolvar))
[ python]# python3 test.py
False <class ‘bool‘>
3.4 复数型
# 1.方式一 complexvar = 3+4j print(complexvar,type(complexvar)) # 2.方式二 complex(实数,虚数) complexvar = complex(-5,-2) print(complexvar)
[ python]# python3 test.py
(3+4j) <class ‘complex‘> (-5-2j)
四 容器类型数据
4.1 str 字符串类型
用引号引起来的数据就是字符串
# 转义字符: \ (1) 将有意义的字符变得无意义 (2) 将无意义的字符变得有意义 \r\n,\n 代表换行 \t 代表缩进 (水平制表符) \r 代表将后面的字符拉到当前行行首 可以用\把有意义的引号变得无意义
# (1) 单引号 strvar = ‘mylove‘ print(strvar,type(strvar)) # (2) 双引号 strvar = "facebook,\ngoogle" print(strvar,type(strvar)) strvar = "facebook,\tgoogl\r\ne" print(strvar,type(strvar)) strvar = "facebook,\rgoogle" print(strvar,type(strvar)) strvar = "face\"boo\"k" print(strvar,type(strvar)) # (3) 三引号 (支持跨行 无需对单双引号重新转义) strvar = """本来无一物, 何处惹尘埃""" strvar = ‘‘‘本来"无"一‘物‘, 何处惹尘埃‘‘‘ print(strvar)
[ python]# python3 test.py
mylove <class ‘str‘> facebook, google <class ‘str‘> facebook, googl e <class ‘str‘> google <class ‘str‘> face"boo"k <class ‘str‘> 本来"无"一‘物‘, 何处惹尘埃
4.2 元字符串
原型化输出字符串,让转义字符失效
strvar = r"床前明月光,\r疑是地上霜" #取消\r的转义效果 print(strvar) strvar = r"C:\Windows\System32\drivers\etc" print(strvar)
[ python]# python3 test.py
床前明月光,\r疑是地上霜 C:\Windows\System32\drivers\etc
4.3 字符串的格式化
# %d 整型占位符 strvar = "我有%d支铅笔" % (10) print(strvar) # %2d 默认数字具右 strvar = "我有%2d支铅笔" % (3) print(strvar) # %-2d 默认数字具左 strvar = "我有%-3d支铅笔" % (3) print(strvar)
[ python]# python3 test.py
我有10支铅笔 我有 3支铅笔 我有3 支铅笔
4.4 %f浮点型占位符
默认小数点后面保留6位
strvar = "一包烟的价格是%f元" % (9.99) print(strvar) # %.1f 存在四舍五入 strvar = "一包烟的价格是%.3f元" % (9.99) print(strvar) strvar = "一包烟的价格是%.1f元" % (9.99) print(strvar)
[ python]# python3 test.py
一包烟的价格是9.990000元 一包烟的价格是9.990元 一包烟的价格是10.0元
4.5 %s 字符串占位符
strvar = "%s" % ("今天学习python") print(strvar)
[ python]# python3 test.py
今天学习python
五 列表类型
可获取,可修改,有序
5.1 定义一个空列表
listvar = [] print(listvar,type(listvar))
[ python]# python3 test.py
[] <class ‘list‘>
5.2 正向索引
listvar = [13,3.14,True,6-2j,"好好学习"] print(listvar,type(listvar))
[ python]# python3 test.py
[13, 3.14, True, (6-2j), ‘好好学习‘] <class ‘list‘>
5.3 正向取值和反向取值
listvar = [13,3.14,True,6-2j,"好好学习"] res = listvar[4] print(res) res = listvar[-1] print(res)
[ python]# python3 test.py
好好学习 好好学习
5.4 通用用法
=> 想要获取列表最后一个元素值 需要通过len函数
len 用来获取容器类型数据的元素个数(长度)
listvar = [13,3.14,True,6-2j,"好好学习"] res = listvar[4] print(res) res = listvar[-1] print(res) # 通用 => 想要获取列表最后一个元素值 需要通过len函数 # len 用来获取容器类型数据的元素个数(长度) # 5 - 1 => 4 res = len(listvar)-1 print(listvar[res]) print(listvar[len(listvar)-1])
[ python]# python3 test.py
好好学习 好好学习 好好学习 好好学习
5.5 修改列表当中的值
listvar = [13,3.14,True,6-2j,"好好学习"] res = listvar[4] print(res) res = listvar[-1] print(res)#修改列表当中的值 listvar[3] = "天天" listvar[-4] = "向上" print(listvar)
[ python]# python3 test.py
好好学习 好好学习 [13, ‘向上‘, True, ‘天天‘, ‘好好学习‘]
六 tuple类型
可获取,不可修改,有序
证明是一个元组的根本特征是逗号,声明一个空元组,可以直接使用(),(1) 表明一个整型
6.1 声明元组
tuplevar = () print(tuplevar,type(tuplevar)) tuplevar = (1,2,3,4) print(tuplevar,type(tuplevar)) tuplevar = (1) print(tuplevar,type(tuplevar)) tuplevar = (1,) print(tuplevar,type(tuplevar)) tuplevar = 1,2,3 print(tuplevar,type(tuplevar))
[ python]# python3 test.py
() <class ‘tuple‘> (1, 2, 3, 4) <class ‘tuple‘> 1 <class ‘int‘> (1,) <class ‘tuple‘> (1, 2, 3) <class ‘tuple‘>
6.2 获取最后一个值
#正向索引 0 1 2 tuplevar = ("a","b",False) #逆向索引 -3 -2 -1 res = tuplevar[-1] #或者 res = tuplevar[len(tuplevar)-1] print(res)
[ python]# python3 test.py
False
6.3 元组不可修改
尝试修改
tuplevar = ("a","b",False) tuplevar[-1] = True res = tuplevar[-1] print(res)
[ python]# python3 test.py
Traceback (most recent call last): File "test.py", line 2, in <module> tuplevar[-1] = True TypeError: ‘tuple‘ object does not support item assignment
七 容器类型数据 set 和 dict
set 集合 (用来做交叉并补 集合操作的)
自动去重 无序
7.1 定义一个空集合
setvar = set() #{} 不是集合 而是一个字典 print(setvar,type(setvar))
[ python]# python3 test.py
set() <class ‘set‘>
7.2 自动去重
无序
setvar = {"周杰伦","王宝强","李宇春"} print(setvar) setvar = {"刘德华","张学友","郭富城","王文","王文"} print(setvar)
[ python]# python3 test.py
{‘周杰伦‘, ‘王宝强‘, ‘李宇春‘} {‘刘德华‘, ‘王文‘, ‘张学友‘, ‘郭富城‘}
7.3 dict字典
在3.6版本之前,字典无序, 在3.6版本之后,字典有序(看起来有序,本质上无序) 哈希算法: 将不可变的任意长度值计算成具有固定长度的唯一值,这个值可正可负,可大可小,通过计算出来的键,来获取值,形成一一映射的效果,管这个算法叫哈希算法,这个值叫哈希值 字典进行存储的时候,并不一定按照字面顺序依次存在内存中,而是通过哈希算法,随机散列的把键所对应的值存储在内存里,所以字典无序(为了求效率,图快),可以通过哈希算出的键获取散列的值 3.6的之后,记录了字典的字面顺序,在取出数据时,进行重新排序,所以看起来有序(但本质上无序,只要他使用了哈希) 可哈希数据(不可变的数据) : Number(int float complex bool) str tuple 不可哈希数据(可变数据) : list set dict (list dict 值可变 ; set 顺序可变) 字典的键 集合的值 都需要可哈希数据,剩下的数据无所谓. 由键值对数据组成,有序
定义一个空字典
dictvar = {} print(dictvar,type(dictvar))
[ python]# python3 test.py
{} <class ‘dict‘>
字典语法:
# 语法: dictvar = {‘a‘:1} # "键" : "值" 键和值之间用冒号隔开, 键值对之间用逗号隔开
定义一个字典
dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"} print(dictvar,type(dictvar))
[ python]# python3 test.py
{‘top‘: ‘程咬金‘, ‘middle‘: ‘妖姬‘, ‘bottom‘: ‘崔丝塔娜‘, ‘jungle‘: ‘七大大声‘, ‘support‘: ‘德玛亚‘} <class ‘dict‘>
获取字典当中的值 (通过键来获取值)
dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"} print(dictvar,type(dictvar)) res = dictvar[‘middle‘] print(res)
[ python]# python3 test.py
{‘top‘: ‘程咬金‘, ‘middle‘: ‘妖姬‘, ‘bottom‘: ‘崔丝塔娜‘, ‘jungle‘: ‘七大大声‘, ‘support‘: ‘德玛亚‘} <class ‘dict‘> 妖姬
通过字典的键来修改值
dictvar = {"top":"程咬金" , "middle":"妖姬" , "bottom":"崔丝塔娜" , "jungle":"七大大声" , "support":"德玛西亚"} print(dictvar,type(dictvar)) res = dictvar[‘middle‘] print(res) dictvar[‘top‘] = "赵信" print(dictvar)
[ python]# python3 test.py
{‘top‘: ‘程咬金‘, ‘middle‘: ‘妖姬‘, ‘bottom‘: ‘崔丝塔娜‘, ‘jungle‘: ‘七大大声‘, ‘support‘: ‘德玛亚‘} <class ‘dict‘> 妖姬 {‘top‘: ‘赵信‘, ‘middle‘: ‘妖姬‘, ‘bottom‘: ‘崔丝塔娜‘, ‘jungle‘: ‘七大大声‘, ‘support‘: ‘德玛西‘}
可哈希数据 (字典) 不推荐如下使用键 一般就用变量命名的字符串形式去定义键
dictvar = {35:1,36:True,3.15:"111",False:"112233",3+2j:12,"你好":78, (11,22,333):4 } print(dictvar) # 获取4 print(dictvar[(11,22,333)]) dictvar[False] = 67 print(dictvar)
[ python]# python3 test.py
{35: 1, 36: True, 3.15: ‘111‘, False: ‘112233‘, (3+2j): 12, ‘你好‘: 78, (11, 22, 333): 4} 4 {35: 1, 36: True, 3.15: ‘111‘, False: 67, (3+2j): 12, ‘你好‘: 78, (11, 22, 333): 4}
字典的键唯一 如果两个键相同 后面的覆盖前面的
字典的键是唯一不可修改,字典的值随意
dictvar = {"a":1,‘a‘:2} print(dictvar)
[ python]# python3 test.py
{‘a‘: 2}