python学习之路,python基础(一)

变量和简单数据类型

变量

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都是实数。
注: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值访问(映射类型) 字典

 

 

  



posted @ 2018-04-23 10:55  魏大大  阅读(204)  评论(0编辑  收藏  举报