四大数据类型

2024-04-24
-
-

基本数据类型

数值型

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())

 

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录关闭