数据类型
在python中的数据类型可以分为两大类:
可变数据类型:列表、字典
不可变数据类型:数字、元组、字符串
Number
List列表
列表就是用一对中括号括起来的多个元素的有序集合,各元素之间用逗号隔开。列表中可以包含多个元素,且元素类型可以不同。
ls[beg:end]
ls[index]
常用方法:
import copy
ls1=[1,2,3,1]#声明列表
ls2=list(('java','python'))#通过list()函数将元组转换成列表
ls3=ls1+ls2 #列表拼接
ls3=ls1*4 #列表循环
ls3=copy.deepcopy(ls1) # 列表复制
ls2.insert(0,'c') #插入
del ls2[2]#删除
print(ls2.index('java'))#获得目标元素在列表中第一次出现的位置
print(max(ls1))#最大值
print(min(ls1))#最小值
print(ls1.count(1))#目标元素出现次数
print(len(ls1))#列表长度
ls1.sort(reverse=False)#排序,reverse=False代表升序,reverse=False代表降序
print(ls1)#打印列表中所有元素
Tuple
元组就是用一对小括号括起来的多个元素的有序集合,各元素之间用逗号分隔。如果创建的元组只含有一个元素,则需要在该元素之后加逗号。
元组与列表相似,不同之处在于:元组使用小括号而列表用中括号,且元组中的元素不能被修改
t[beg:end]
t[index]
常用方法:
t1=(15,14,7,18)# 创建元组
t2=('python','java')
t3=t1+t2# 元组拼接
print(t3)
print(max(t1))#元组中最大的元素
print(min(t1))#元组中最小的元素
Set
集合中的各元素无序、不允许有相同元素且必须是可哈希的对象。(列表、元组、集合、字典都是不可哈希的对象,不能作为SET中的元素)
常用方法:
#创建集合的两种方式
s1={1,2,3,1}
s2=set([1,2,3,6])
s1.add('python')#添加元素
s1.update([4,5])#先将元素拆分然后再添加
print(s1.intersection(s2))#交集
print(s1.union(s2))#并集
print(s1.difference(s2))#差集(s1中有而s2中没有)
print(s1.symmetric_difference(s2))#对称差集(s1中有而s2中没有和s2中有而s1中没有的所有元素)
print(s1.issubset(s2))#是否为子集
print(s1.issuperset(s2))#是否为父集
Dictionary
字典是另一种无序的对象集合。但与set不同,字典是一种映射类型,每个元素是一个键值对。在一个字典对象中,键必须是唯一的,且键必须是可哈希数据。
常用方法:
#创建字典的两种方式
a={'one':1,'two':2,'three':3}
b=dict(one=1,two=2,three=3)
c=dict(zip(['one','two','three'],[1,2,3]))#zip函数:zip函数是将不同对象中对应的元素分别打包成元组,然后返回由这些元组组成的列表。
#初始化字典的两种方式
d1={}.fromkeys(['sno','name','major'])
d2=dict().fromkeys(['sno','name','major'],'known')
d1['sno']='1810100'#字典中有'sno',于是更新sno的值
d1['age']='11'#字典中没有'age',于是插入age
d1.update({'name':'xiaogang'})#字典中有'name',于是更新sno的值
del d1['sno']#删除sno
name=d1.pop('name','not found')#将name的值取出赋给nmae变量,然后删除name
print(len(d1))#字典长度
d1.get('major')#获得'major'的值
dMerge=dict(d1,**d2)#拼接两个字典
d1.keys()#获得字典中所有的key
d1.values()#获得字典中所有的values
#返回可按键值方式遍历的对象,用于遍历字典
for key,value in d1.items()
print(key,value)
d3=d1.copy()#浅拷贝,指向同一对象
d4=copy.deepcopy(d1)#深拷贝,重新生成新的对象
d1.clear()#清空字典
String
s=“hello world”
s[beg:end]
s[index]
常用方法:
# 字符串的三种创建方式,三种符号可以搭配使用来避免使用转义符“\”
str1='java'
str2="python"
str3='''c++'''
# 字符串的比较,如果两个字符串长度不同,则长的字符串具有更大的值。
# 如果两个字符串长度相同,则按照从左到右的顺序逐个字符进行比较,字符大小等于其ASCII码的大小
print('str1>str2',str1>str2)
str1='this is a book a'
srt2='this#is#a#book'
ls1=str1.split()#字符串切割,按照空格分割
ls2=srt2.split('#')#字符串切割,按照#来分割
print(str1.find('a'))#字符串从左向右检索,返回目标字符第一次出现的位置
print(str1.rfind('a'))#字符串从右向左检索,返回目标字符第一次出现的位置
str4=str1.replace('a','b')#将字符串中所有的a替换为b
str1.strip()#去除头尾的空格
str1.lstrip()#去除头部的空格
str1.rstrip()#去除尾部的空格
str5=' '
ls=['I','LOVE','YOU']
print(str5.join(ls))#连接字符串,ls各元素之间用str5中的字符串分隔。
print(len(str1))#字符串长度
str1.capitalize()#将字符串的第一个字母大写,其余全部小写
str1.lower()#全部小写
str1.upper()#全部大写
str1.swapcase()#大写小写互换
print("'a'is substring of str?",'a' in str1)#测试是否为字串
格式化方法
占位符
format方法
使用format方法进行字符串的格式化,实参与字符串中替换字段之间的对应关系更加清晰。
str1='{0}的计算机成绩为{1},{0}的数学成绩为{2}'
print(str1.format('小明',90,85))
正则表达式
基础语法
re模块的使用
高级应用
切片
从一个序列对象中取部分元素形成一个新的序列对象是一个非常常用的操作,这个操作被称为切片。切片操作除了可以取指定范围中的多个连续元素,还可以以固定步长取指定范围中的多个不联系元素。
ls1=list(range(0,20))# 创建包含20个元素(0~20)的列表
print("ls1:",ls1)
ls2=ls1[3:10:2]# 从ls1下标为3~9的元素中以步长2取元素生成一个新列表
print("ls2: ",ls2)
ls3=ls1[-10::3]# 从ls1倒数第10个元素开始到最后一个元素,以步长3取元素生成一个新列表
print("ls3",ls3)
ls4=ls1[-1:-11:-3]# ls1最后一个元素到到数第10个元素,以步长为-3取元素生成;一个新列表
print("ls4:",ls4)
列表生成表达式
当我们创建一个列表对象时,可以使用列表生成式。在列表生成式中,可以使用for,if 以及一些运算生成列表中的元素。
ls=[x*x for x in range(10)]
print(ls)
生成器
当一个列表中包含大量元素时,如果一次性生成这些元素并保存在列表中,将占用大量的内存空间。对于这个问题,我们可以通过生成器来解决,即根据需要进行计算并获取列表中某个元素的值。
g=(x*x for x in range(10))
print("g的类型为:",type(g))
for i in g :
print(i,end=" ")
迭代器
迭代器是指可以通过next函数不断获取 下一个值的对象,并不是所有的可迭代对象都是迭代器。可以使用isinstance方法判断一个对象是否是可迭代对象或迭代器。
from collections.abc import Iterator,Iterable
ls = [1,2,3,4,5,6]
g=(x for x in range(1,6))
print("ls是可迭代对象" , isinstance(ls,Iterable))
print("g是可迭代对象" , isinstance(ls,Iterable))
print("ls是迭代器" , isinstance(ls,Iterator))
print("g是迭代器" , isinstance(g,Iterator))
条件语句
if score<60:
print('不及格')
elif score<70:
print('及格')
else:
pass #什么都不做
循环语句
FOR
与JAVA不同,PYTHON中FOR循环用于遍历可迭代对象中的每一个元素,并根据当前访问的元素做数据处理。
ls=['python','c++','java']
for k in ls:
print(k)
d={'python':1,'c++':2,'java':3}
for k in d:
print('%s:%d'%(k,d[k]))
如果需要遍历一个数列中的所有数字,可以直接使用range()函数
range([beg],end,[step])
print(list(range(1,5,3))) # output[1,3]
print(list(range(5))) #output[0,1,2,3,4]