一,变量
1,变量类型
变量的类型可以有:整型,浮点型,字符型
2,变量赋值
用等号(=)来给变量进行赋值
name="xiaoming"
注:python中的变量赋值不需要类型声明。
3,多个变量赋值
a=b=c=1
i,j,k=1,2.1,"xx"
4,定义变量的规则
(1) 变量名为数字,字母,下划线组成;
(2)变量名的第一个字符不能是数字;
(3)关键字不能声明为变量
二,数据类型
1,整型
在32位机器上,整型的位数为32位,取值范围为-232~232-1
在64位机器上,整型的位数为64位,取值范围为-264~264-1
注:python中整型没有长整型,短整型之分。
2,浮点型
(1)浮点数的形式
十进制形式:如5.12,512.3
科学计数形式:如5.12e2(5.12x10^2),5.12E2,314e2
3,布尔值
0(False),1(True)
4,字符串
(1)定义
在python中,用引号引起来的就为字符串(引号可以是‘ ’,“ ”)
由数字,字母,下划线组成。
(2)字符串切片
从左到右索引为:默认是从0开始,最大范围是字符串长度-1;
从右向左索引为:默认从-1开始,最大范围是字符串开头。
a="we like python"
print(a[0:2]) #取头不取尾
print(a[1:]) #取第一个字符后的所有字符
print(a[-3:-1]) #从后向前索引
print(a[0:8:2]) #2表示步长,取偶数
(3)拼接(+)
a="we like python"
b="123"
print(a+b)
注:不同字符类型不能实现拼接
(5)重复(*)
a="we like python"
print(a*2)
(6)字符串操作
a="we love python"
b="1223"
print(a.count("o")) #统计字符串中o的数目
print(a.center(20,"+")) #将字符串存入到center开辟的空间中,并将字符串居中
print(a.capitalize()) #将字符串的首字母大写
print(a.encode(encoding="utf-8")) #将字符串编码
print(a.expandtabs(tabsize=10)) #将tab转换为空格
print(a.endswith("n")) #判断字符串以什么字符结尾
a="{name} love python"
print(a.format(name="liu")) #格式化输出
a.format_map({"name":"liu"})) #字典的方式格式化输出
print(a.find("w")) #输出元素下标
print(a.isdigit()) #判断是不是数字
print(a.isupper()) #判断是不是大写
print(a.istitle()) #判断所有单词拼写首字母是否为大写
print(b.isspace()) #判断是不是空格
print(a.isprintable()) #判断是否能打印,终端文件和设备文件不能被打印
print(a.islower()) #判断是不是小写
print(b.isdecimal()) #判断是不是二进制
print(b.isidentifier()) #判断是不是合法的标识符
print(b.isalpha()) #判断是不是字母
print(b.isalnum()) #判断字符串是否由数字,字母构成
print(b.isnumeric()) #判断是不是数字
print(a.join(b)) #将序列中的元素以指定的字符连接生成新的字符串
print(a.ljust(20,"+")) #将字符串左对齐,不够补全
print(a.rjust(20,"+")) #将字符串右对齐,不够补全
print(a.lstrip()) #去掉左边空格
print(a.rstrip()) #去掉右边空格
print(a.strip()) #去掉左右两边空格
p=str.maketrans("abcdef","123456") #将前面值和后面做映射,要求一一对应
print("adf".translate(p)) #根据前面的字符转换后面的字符
print(a.upper()) #将小写转换为大写
print(a.lower()) #将大写转换为小写
print(a.zfill(20)) #用0填充不够的长度
print(a.replace("w","W")) #用后面的字符串替代前面的
print(a.rpartition(" ")) #从最右边开始按分隔符进行分割并返回元组,第一个为分隔符最左边的字符串,第二个为分隔符本身,第三个为分隔符最右边的字符串
print(a.rsplit(" ")) #通过指定字符串对元素进行分割,并返回列表
print(a.startswith("o")) #判断是不是以指定字符串开头
print("anliu\nis \na \nboy".splitlines()) #返回一个各行作为元素的列表
print(a.swapcase()) #对字符串的大小写进行转换
三,列表
(1)定义
列表用[]标识,如list=[‘1’,‘a’,‘li’]
它支持字符,数字,字符串,列表
(2)切片,拼接,重复都和字符串的一样
(3)查看索引
list=["12","we like python","00"]
print(list.index("00"))
(4)统计元素
list=["12","we like python","00"]
print(list.count("00"))
(5)追加
list=["12","we like python","00"]
print(list.append("aaa"))
print(list)
(6)清空
list=["12","we like python","00"]
print(list.clear())
print(list)
(7)删除
list=["12","we like python","00","00"]
print(list.pop(1))
print(list)
注:不指定默认删除最后一个字符
(8)反转,将从前往回变为从后往前
list=["12","we like python","00","00"]
print(list.reverse())
print(list)
(9)合并列表
list=["12","we like python","00","00"]
a=["wm","gth"]
print(list.extend(a))
print(list)
(10)以ASCII码进行排序
list=["12","we like python","00","00"]
list.sort()
print(list)
(11)移除
list=["12","we like python","00"]
list.remove("00")
print(list)
(12)插入
list=["12","we like python","00"]
list.insert(2,"111")
print(list)
(13)删除列表
list=["12","we like python","00"]
del list[1]
print(list)
(14)列表的复制
浅copy
p=["12","we like python","00"]
(1)list1=p.copy()
(2)list2 = copy.copy(p)
(3)list3=p[:]
(4)list4 = list(p)
深copy
list5=copy.deepcopy(p)
浅copy和深copy对比:
#浅copy
p = ["name",["a",100]]
list1=p.copy()
list2=p.copy()
print(list1)
print(list2)
list1[0]="00000"
list1[1][1]="200"
print(list1)
print(list2)
对于浅copy,第一层创建的是新的内存地址,而从第二层开始至更深的层,指向的都是同一个内存地址。
#深copy
p = ["name",["a",100]]
list3=copy.deepcopy(p)
list4=copy.deepcopy(p)
print(list3)
print(list4)
list3[0]="00000"
list3[1][1]="200"
print(list3)
print(list4)
深copy不仅仅拷贝最外层容器,还会拷贝容器中的地址。
四,字典
列表是有序的对象集合,字典是无序的对象集合
1,定义
字典用{}标识,由索引(key)和它对应的值(value)组成。
字典当中的元素是通过键来存取,而不是通过偏移存取
2,字典可以嵌套列表:
info={"name":["xiaoxiao","wm"]}
3,字典的操作
info={"name":["xiaoxiao","wm"]}
print(info.items()) #以元组的形式输出
print(info.keys()) #获取所有key值
print(info.get("name")) #获取值
print(info.values()) #获取所有value值
info["age"]="aaa" #有则修改,无则增加
print(info)
4,字典也存在深copy和浅copy
五,字符编码
1,python程序中的字符编码
当我们用分别python2和python3运行下列程序:
[root@localhost test]# cat python2.py
#/usr/bin/python2
print("你好")
用户python2运行时会报错:
用python3运行时可输出正确结果;
原因是因为python2中默认的字符编码格式是ASCII格式,不能解析中文字符;python3中的默认的字符编码格式是utf-8,可以解析中文字符。我们可以用查看默认的字符类型。
import sys
print(sys.getdefaultencoding())
因此如果在python2的程序中指定编码格式即可正确输出结果。
2,字符编码的介绍
(1)ASCII(美国信息交换标准代码)规定其最多只能用8位来表示。即2^8-1=255个字符。
(2)由于ASCII码无法将世界上的各种文字及字符全部表示,因此产生了Unicode,它为每种语言的每个字符设定了统一并且唯一的二进制编码,规定所有字符和符号最少由16位(2个字节)来表示。
(3)utf-8.是对Unicode编码的压缩和优化,他将所有放入字符和符号进行分类,ASCII码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存,
3,字符编码(decode)和解码(encode)
(1)对于python2
将utf-8--------->gbk
[root@localhost test]# cat python2.py
#/usr/bin/python2
#-*- encoding:utf-8 -*-
import sys
a="您好"
#print(sys.getdefaultencoding())
a_to_unic=a.decode("utf-8")
a_to_gbk=a_to_unic.encode("gbk")
print(a_to_unic)
print(a_to_gbk)
将gbk------------>utf-8
a_to_utf8=a.decode("gbk").encode("utf-8")
(2)对于python3