变量和简单数据类型
变量
python中的变量定义无需声明变量类型
变量的命名和使用
1.变量名只能包含字母,下划线,数字。变量名只能以字母或下划线打头,不能使用数字打头。
2.变量名不能包含空格
3.不要将python关键字和函数名作为变量
4.变量名应该简短又具有描述性,尽量少使用数字1和字母O
简单数据类型
1.数字
python中的数字类型分为整型,长整型,浮点型
(int)整型:
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
使用 int(字符串类型数字)强制转换
(long)长整型:
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
(float)浮点型:
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
2.布尔型
真:True,
假:False,
3.字符串
1 "Hello world"
万恶的字符串拼接 + :
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
#优先掌握的操作: #1、按索引取值(正向取+反向取) :只能取 #2、切片(顾头不顾尾,步长) #3、长度len #4、成员运算in和not in #5、移除空白strip #6、切分split #7、循环
#1、strip,lstrip,rstrip :去除首尾相关字符 #2、lower,upper :大小写转换 , title:单词首字母大写 #3、startswith,endswith :判断是否以xxx开头,结尾,返回布尔值 #4、format的三种玩法 : 格式化输出 #5、split,rsplit :分割,返回列表对象 #6、join :obj1.jion(obj2),将obj1依次插入到可迭代对象我obj2的每个元素之间 #7、replace 替换 #8、isdigit 可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
#strip name='*egon**' print(name.strip('*')) print(name.lstrip('*')) print(name.rstrip('*')) #lower,upper name='egon' print(name.lower()) print(name.upper()) #startswith,endswith name='alex_SB' print(name.endswith('SB')) print(name.startswith('alex')) #format的三种玩法 res='{} {} {}'.format('egon',18,'male') res='{1} {0} {1}'.format('egon',18,'male') res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) #split name='root:x:0:0::/root:/bin/bash' print(name.split(':')) #默认分隔符为空格 name='C:/a/b/c/d.txt' #只想拿到顶级目录 print(name.split('/',1)) name='a|b|c' print(name.rsplit('|',1)) #从右开始切分 #join tag=' ' print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串 #replace name='alex say :i have one tesla,my name is alex' print(name.replace('alex','SB',1)) #isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法 age=input('>>: ') print(age.isdigit()) 示例
其他操作,了解即可
#1、find,rfind,index,rindex,count #2、center,ljust,rjust,zfill #3、expandtabs #4、captalize,swapcase,title #5、is数字系列 #6、is其他
1 #find,rfind,index,rindex,count 2 name='egon say hello' 3 print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 4 # print(name.index('e',2,4)) #同上,但是找不到会报错 5 print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有 6 7 #center,ljust,rjust,zfill 8 name='egon' 9 print(name.center(30,'-')) 10 print(name.ljust(30,'*')) 11 print(name.rjust(30,'*')) 12 print(name.zfill(50)) #用0填充 13 14 #expandtabs 15 name='egon hello' 16 print(name) 17 print(name.expandtabs(1)) 18 19 #captalize,swapcase,title 20 print(name.capitalize()) #首字母大写 21 print(name.swapcase()) #大小写翻转 22 msg='egon say hi' 23 print(msg.title()) #每个单词的首字母大写 24 25 #is数字系列 26 #在python3中 27 num1=b'4' #bytes 28 num2=u'4' #unicode,python3中无需加u就是unicode 29 num3='四' #中文数字 30 num4='Ⅳ' #罗马数字 31 32 #isdigt:bytes,unicode 33 print(num1.isdigit()) #True 34 print(num2.isdigit()) #True 35 print(num3.isdigit()) #False 36 print(num4.isdigit()) #False 37 38 #isdecimal:uncicode 39 #bytes类型无isdecimal方法 40 print(num2.isdecimal()) #True 41 print(num3.isdecimal()) #False 42 print(num4.isdecimal()) #False 43 44 #isnumberic:unicode,中文数字,罗马数字 45 #bytes类型无isnumberic方法 46 print(num2.isnumeric()) #True 47 print(num3.isnumeric()) #True 48 print(num4.isnumeric()) #True 49 50 #三者不能判断浮点数 51 num5='4.3' 52 print(num5.isdigit()) 53 print(num5.isdecimal()) 54 print(num5.isnumeric()) 55 ''' 56 总结: 57 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 58 如果要判断中文数字或罗马数字,则需要用到isnumeric 59 ''' 60 61 #is其他 62 print('===>') 63 name='egon123' 64 print(name.isalnum()) #字符串由字母或数字组成 65 print(name.isalpha()) #字符串只由字母组成 66 67 print(name.isidentifier()) 68 print(name.islower()) 69 print(name.isupper()) 70 print(name.isspace()) 71 print(name.istitle()) 72 73 示例
4.列表
list = ["jack","tom","john","thomas"]
#取值
list[0] >>> "jack"
list[-1] >>> "thomas"
#重新赋值
list[0] = 'boby'
#优先掌握的操作: #1、按索引存取值(正向存取+反向存取):即可存也可以取 #2、切片(顾头不顾尾,步长) #3、长度 len() #4、成员运算in和not in #5、追加 append() #6、删除 del(),pop(),remove() #7、循环 for in
#其他操作:
#1、排序 sort()永久性,sorted()临时
#2、翻转顺序 reverse()
#3、创建数字列表 range()
#4、列表生成式,生成器
#5、复制列表,copy()
#ps:反向步长 l=[1,2,3,4,5,6] #正向步长 l[0:3:1] #[1, 2, 3] #反向步长 l[2::-1] #[3, 2, 1] #列表翻转 l[::-1] #[6, 5, 4, 3, 2, 1]
5.元组(不可变列表)
作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读,但是可以重新定义元组的内容 #定义:与列表类型比,只不过[]换成() age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55)) #优先掌握的操作: #1、按索引取值(正向取+反向取):只能取 #2、切片(顾头不顾尾,步长) #3、长度 #4、成员运算in和not in #5、循环
6.字典(无序)
作用:存多个值,key-value存取,取值速度快 #定义:key必须是不可变类型,value可以是任意类型 info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....}) 或 info=dict(name='egon',age=18,sex='male') 或 info=dict([['name','egon'],('age',18)]) 或 {}.fromkeys(('name','age','sex'),None) #优先掌握的操作: #1、按key存取值:可存可取 #2、长度len #3、成员运算in和not in #4、删除 #5、键keys(),值values(),键值对items() #6、循环
7.集合
作用:去重,关系运算, #定义: 知识点回顾 可变类型是不可hash类型 不可变类型是可hash类型 #定义集合: 集合:可以包含多个元素,用逗号分割, 集合的元素遵循三个原则: 1:每个元素必须是不可变类型(可hash,可作为字典的key) 2:没有重复的元素 3:无序 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 #优先掌握的操作: #1、长度len #2、成员运算in和not in #3、|合集 #4、&交集 #5、-差集 #6、^对称差集 #7、== #8、父集:>,>= #9、子集:<,<=
8.数据类型总结
按存储空间的占用区分(从低到高)
数字 字符串 集合:无序,即无序存索引相关信息 元组:有序,需要存索引相关信息,不可变 列表:有序,需要存索引相关信息,可变,需要处理数据的增删改 字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按存值个数区分
标量/原子类型 | 数字,字符串 |
容器类型 | 列表,元组,字典 |
按可变不可变区分
可变 | 列表,字典 |
不可变 | 数字,字符串,元组 |
按访问顺序区分
直接访问 | 数字 |
顺序访问(序列类型) | 字符串,列表,元组 |
key值访问(映射类型) | 字典 |