基本数据类型
数值型
Python 中的数据皆是对象,比如 int 整形对象,float 双精度浮点型,bool逻辑对象,都是单个元素
前缀加 0x,创建一个十六进制的整数:
0xa5 # 等于⼗进制的 165
使用e创建金科学计数法表示浮点数:
1.05e3 # 1050.0
容器型
客容量多个元素的容器对象,比如:list 列表对象,tuple 元组对象、dict 字典对象、set 集合对象。
举例:
使用一对[],创建一个 list 型变量,可修改
lst = [1,3,5]
使用一对括号(),创建一个 tuple 型对象,不可修改
tup = (1,3,5)
注意,含单个元素的元组后面必须保留一个逗号,才被解释为元组,否则会被认为元素本身
使用一对花括号{} 另使用冒号:创建一个 dict 对象:
dic = {'a':1,'b':3,'c':5}
仅使用一对花括号 {},创建一个set 对象
s = {1,3,5}
去最求平均
去掉列表中的一个最小值和一个最大值后,计算剩余元素的平均值
def score_mean(lst):
lst.sort()
lst2 = lst[1:-1]
return round((sum(lst2)/len(lst2)),1)
lst = [9.1,9.10,8.1,9.7,19,8.2,8.6,9.8,5.5]
owe = score_mean(lst)
print(owe)
打印 99 乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d'%(j,i,j*i),end='\t')
print()
样本抽样
from random import randint,sample
lst2 = [randint(0,50) for _ in range(100)]
print(lst2[:5])
lst_sample = sample(lst2,10)
print(lst_sample)
字符串
注意 Python 中没有像 C++ 表示的字符类型(char),所有的字符或串都被统⼀为 str 对象。如单个字符 c 的类型也为 str
strip 用于去除字符串前后的空格:
# 去除前后空格
splk = ' I love Shmaur \t\n '.strip()
print(splk) # I love Shmaur
# 字符串替换 replace
rep = 'i love shmaur'.replace(' ','_')
print(rep) # i_love_shmaur
# 合并字符串
jo = '_'.join(['book','store'])
print(jo) # book_store
#title 用于单词的首字母大写
ti = 'i love shmaur'.title()
print(ti) # I Love Shmaur
#find 用于返回匹配字符串的起始位置索引
fin = 'i love shmaur'.find('sh')
print(fin) # 7
# 转化为判断:str1 是否为 str2+str2 的⼦串
def is_rotation(s1:str,s2:str) -> bool:
if s1 is None or s2 is None:
return False
if len(s1) != len(s2):
return False
def is_substring(s1:str,s2:str)->bool:
return s1 in s2
return is_substring(s1,s2+s2)
rs = is_rotation('stringBook','Bookstring')
print(rs)
rs3 = is_rotation('greatman','mangreat')
print(rs3)
密码安全
# 密码安全要求 要求密码为 6 到 20 位; 密码只包含英⽂字⺟和数字
pat = re.compile(r'[\da-zA-Z]{6,20}')
print(pat.fullmatch('21321'))
print(pat.fullmatch('fsdfsd231534frdew1f5s1fs3d51fe51fgreg5r1hyyt'))
print(pat.fullmatch('qaz_231'))
print(pat.fullmatch('13245678'))
自定义类型
Python 使用关键字 class 定制自己的类,self 表示类实例对象本身
一个自定义类内包括属性、方法,其中有些方法是自带的
类(对象):
class Dog(object): # 创建类
pass
wang=Dog() # 实例化类
以上定义⼀个 Dog 对象,它继承于根类 object,pass 表示没有⾃定义任何属性和⽅法。
自定义类需要注意
class Dog(object):
def __init__(self,name,dtype):
self.name = name
self.dtype = dtype
def shout(self):
print('I\'m %s,type:%s' % (self.name,self.dtype))
wang=Dog('wang','cute')
print(wang.dtype) # cute
print(wang.shout()) # I'm wang,type:cute
⾃定义⽅法的第⼀个参数必须是 self,它指向实例本身,如Dog 类型的实例 dog;
引⽤属性时,必须前⾯添加 self,⽐如 self.name 等。
看到创建的两个属性和⼀个⽅法都被暴露在外⾯,可被 wang 调⽤。这样的话,这些属性就会被任意修改:
wang.name='wrong_name' # wrong_name
如果想避免属性 name 被修改,可以将它变为私有变量。改动⽅法:属性前加 2 个 _ 后,变为私有属性。
class Dog(object):
def __init__(self,name,dtype):
self.__name = name
self.__dtype = dtype
def shout(self):
print('I\'m %s,type:%s' % (self.name,self.dtype))
def get_name(self):
return self.__name
wang=Dog('wang','cute')
print(wang.get_name())
使⽤ Python ⾃带的 property 类,就会优雅地将 name 变为只读的
class Dog(object):
def __init__(self,name,dtype):
self.__name = name
self.__dtype = dtype
def shout(self):
print('I\'m %s,type:%s' % (self.name,self.dtype))
@property
def name(self):
return self.__name
wang=Dog('wang','cute')
print(wang.name)
# print(wang.shout())
如果使 name 既可读⼜可写,就再增加⼀个装饰器 @name.setter。
class Dog(object):
def __init__(self,name,dtype):
self.__name = name
self.__dtype = dtype
def shout(self):
print('I\'m %s,type:%s' % (self.name,self.dtype))
@property
def name(self):
return self.__name
@name.setter
def name(self,newN):
self.__name = newN
wang=Dog('wang','cute')
wang.name = 'wangwang'
print(wang.name)
# print(wang.shout())