一 、pyhton2与python3的区别
在pyhton2中,其中编码默认使用的是ascii编码,输出格式为print"xxx",输入为raw_input(“请输入”),在整型中有int和long两种,计算除法的时候只能保留整数,还有range生成列表和xrange生成迭代器两种,在创建模块的包时需要在包中创建一个__init__.py文件,字符串在电脑中的编码分为Unicode和str,深度优先。
在python3中,其中编码默认使用的是utf-8编码,输出格式为print("xxx"),输入为input("请输入"),在整型中只有int型,除法会保留全部结果,并且只有一种range生成的为迭代器,在电脑里编码为str和byte,在创建模块的包时可以只用,广度优先。
二、数据类型
1. int整型
整数称为整型,并且可以利用int()将可以变为整型的其他类型变为整型。
2.str 字符串不可变类型
2.1 表示方法
可以用单引号''双引号""表示
‘’和""表示空字符串
2.2 字符串方法
变大写:字符串.upper()
变小写:字符串.lower()
将字符串居中两边用*代替每边有6个:字符串.center(6,'*')
判断是否可转换成数字:字符串.isdecimal()
去除空格、换行符(\n)、Tab(\t):字符串.strip()
把字符串的z替换成x:字符串.replace('z','x')
把字符串根据x切割成列表(其中不包含x):字符串.spilt('x')
判断是否已x开头或者结尾(返回布尔值):字符串.startswith/endwith(x)
字符串格式化:%s为字符串、%d为数字 例:'%s在教室‘(name,)
循环每个元素并在每个元素之间加入指定的连接符:连接符.join(字符串)
3 bool 布尔值
布尔值只有True和False两种
对于bool类型来说:整数0为Flase,其余为True
字符串空‘’为Flase,其余为True
列表[]为Flase,其余为True
元组空()为False,其余为True。
4 list 列表
4.1 概念和表示方法
当想要表示多个事物的时候可以用列表,用[]表示,每个元素用逗号隔开
4.2 列表的方法
在列表后追加元素:列表.append(元素)
在指定索引位置进行插入元素:列表.insert(1,'xxx')
删除从左到右的第一个匹配元素:列表.remove('xxx')
删除匹配到的索引位置的元素(默认删除最后一个):列表.pop(2)
清空列表:列表.clear()
在原有的列表中加入另外一个列表:列表1.extend(列表2)
列表的排序从小到大:列表.sort(reverse=False)
列表的排序从大到小:列表.sort(reverse=True)
4.3 强制转换
字符串强制转换成列表:v1 = list("dskjfd")
元祖强制转换成列表:v2 = list((11,22,33,44))
4.4 嵌套
列表中可以互相嵌套:[1,[11,22],2]
5 元组
5.1 元组的书写规范和概念
书写规范:user=(11,22,33,'如果')
元组没有方法,且元组中的数据不可改变
5.2 嵌套
元组嵌套元组:(11,22,(1,2)) #数据不可改
元组嵌套列表:(11,22,[1,2]) #列表中的数据可以改,但是不能改元组的元素包括列表
列表嵌套元组:[1,2,(11,22)] #列表中的数据可以改包括元组,但是不能改元组的元素
5.3 强制转换
列表转成元组:v1 = tuple([1,2,3])
6 dict 字典
6.1 字典的书写规范
dict = {'键':'值','键’,‘值’},冒号前后称为一个键值对
例:dict1 = {'name':'如果','age':'20'}
6.2 字典的方法
获取字典中所有的键:info.keys() #不可用可变类型当做字典的键
获取字典中所有的值:info.values()
获取字典中所有的键值对:info.items()
查找字典中是否有指定的键:字典.get('键') #不存在返回None
给字典添加键值对:字典['键']=‘值’
更新字典的值,存在则更新,不存在则添加:字典.update({'键‘:'值'})
7 set 集合
7.1 集合的书写规范
书写规范:v = {1,2,3,4}
空集合:v = set()
注:集合中的元素不能存在重复,且集合元素无序
7.2 集合的方法
集合添加元素:集合.add(元素) #集合中若存在则不添加
集合删除元素:集合.disable(元素) #无序不重复,不能用索引
集合的更新:集合.update(元素) #批量添加
集合的交集:new_set = set1.intersection(set2) #在set1和set2的交集
集合的并集:new_set = set1.union(set2)
集合的差集:new_set = set1.difference(set2)
8 数据类型公共方法
索引:获取第一个位置的元素(从0开始):x[0](排除:int/bool/set) #x[-1] 复数从后向前
切片:获取一部分元素(取前不取后)(排除:int/bool/set)
例题:v = '现实没有如果'
v1 = v[2:4] 获取到位置为2到3的字符串 #没有
v2 = v[3:] 获取到位置为3到最后的字符串 #有如果
v3 = v[:-1] 获取从开始到-2位置的字符串 #现实没有如
步长:获取其中某字符(排除:int/bool/set)
例题:name = ’alexalex‘
val = name[1:-1:2] 获取从1到-1每间隔为2的所有字符 #lxl
val = name[1::2] 获取从1到最后每间隔为2的所有字符 #lxlx
val = name[::2] 获取从开始到最后每间隔为2的所有字符 #aeae
val = name[-1:0:-2] 获取从-1到0每间隔为-2的所有字符 #xlxl
val =name [::-1] 将字符串反转 #xelaxela
删除(排除:str/int/bool/set)
for循环(排除:int/bool)
len:计算长度,判断有多少元素(排除:int/bool)
9 条件判断
9.1 if 条件:
内容
9.2 if 条件:
内容
else:
内容
9.3 if 条件:
内容
elif 条件:
内容
else:
内容
10 循环
10.1 while 循环
基本条件:while + 条件 例:while True:(永久成立)
关键字:break 例:while True:
break #终止循环
关键字:continue while num <10:
continue #循环如果遇到continue则直接执行下一次循环,不执行下面
关键字:else #不满足while后的条件时触发
10.2 for 循环
基本条件:for 变量 in 被循环数据: 例:for i in 'alex':
关键字:break 例:for i in 'alex':
break #终止循环
关键字:continue for i in 'alex':
continue #循环如果遇到continue则直接执行下一次循环,不执行下面
关键字:else #不满足for后的条件时触发
11 运算符
11.1 普通运算符
加:+ 减:- 乘:* 除:/ 取余数:% 次方:** 取商的整数://
11.2 比较运算
等于:== 不等于:!= 大于:> 小于:< 大于等于:>= 小于等于:<=
11.3 赋值运算
c=a+b:将a+b的结果赋值给c
c+=a,等效于c=c+a
c-=a,等效于c=c-a
c*=a,等效于c=ca
c/=a,等效于c=c/a
c%=a,等效于c=c%a #取余数
c**=a,等效于c=c**a
c//=a,等效于c=c//a #取整数
11.4 逻辑运算
与:and 例:x and y 如果X为False,取X否则取Y
或:or 例:x or y 如果x为False,取y否则取x
非:not 例:如果x为Flase,则取True,否则为Flase
11.5 成员运算符
判断某字符串中是否含有某字符:in
判断某字符串中是否不含有某字符:not in
11.6 运算符优先级
11.7 内存相关
查看内存地址:print(id(v1))
python常用地址:-5~256
==和is的区别:==只是比较值是否相等,is比较内存地址是否一致
例一 v1 = [1,2,3] v2 = [1,2,3] #数据一致但是存储磁盘内位置不一致
例二 v1 = [1,2,3] v2 =v1 v1.append(666) print(v2)#[1,2,3,666] #v2把自己指向v1数据的地址,当v1添加时,v2也存在
例三 v1 = [1,2,3] v2 =v1 v1 = [11,22,33] print(v2)#[1,2,3] #v1被重新赋值,v2指向原内存地址,v1已开辟新内存地址
例四 v1 = [1,2,3] v2 = [11,v1]
v1.append(9) print(v2)#[11,[1,2,3,9]
v2[1].append(999) print(v1)#[1,2,3,999]
v1 = 999 print(v2)#[11,22,[1,2,3]]
v2[1] = 999 print(v1)#[1,2,3]