变量和简单数据类型
变量
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\thello'
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值访问(映射类型) | 字典 |