python四大數據類型總結

1、數值型

Python 中的數據皆是對象,比如被熟知的 int 整型對象、float 雙精度浮點型、bool 邏輯對象,它們都是單個元素。

2、容器型

可容納多個元素的容器對象,常用的比如:list 列表對象、 tuple 元組對象、dict 字典對象、set 集合對象。

  • list列表:[ ],可增加修改等操作,類似於常規數組。
  • tuple元組:(),一旦創建不可增刪,且只有單個元素時需保留逗號,如(1,),否則會被認爲元素本身。
  • dict字典:{ },也就是{key :value}形式,其爲一個哈希表。
  • set集合:{ },但區別於字典,其僅使用一對{ }來創建,形如{1, 2, 3}

3、字符串

Python 中所有的字符或串都被統一爲 str 對象。如單個字符 c 的類型也爲 str。常見字符串操作方法:

  • strip():去除字符串前後的空格。
  • replace():字符串的替換。
  • join():合併字符串。
'_'.join(['book', 'store','count'])
#輸出
'book_store_count'
  • title():單詞首字母大寫
  • find():匹配字符串起始位置索引

除了常見的str封裝的字符串操作方法,也提供了re正則匹配:
例1:

功能:密碼的安全檢查
密碼安全要求:
(1)要求密碼爲 6 到 20 位;
(2)密碼只包含英文字母和數字;

python實現:

import re
pat = re.compile(r'\w{6,20}') # 這是錯誤的,因爲 \w 通配符匹配的是字母,數字和下劃線,題目要求不能含有下劃線
# 使用最穩的方法:\da-zA-Z 滿足“密碼只包含英文字母和數字”
# \d匹配數字 0-9
# a-z 匹配所有小寫字符;A-Z 匹配所有大寫字符
pat = re.compile(r'[\da-zA-Z]{6,20}')

#測試,可通過fullmatch方法,匹配不成功返回None,否則返回匹配對象說明
pat.fullmatch('qaz12') # 返回 None,長度小於 6
pat.fullmatch('qaz12wsxedcrfvtgb67890942234343434') # None 長度大於 22
pat.fullmatch('qaz_231') # None 含有下劃線

pat.fullmatch('n0passw0Rd')  
#返回 <re.Match object; span=(0, 10), match='n0passw0Rd'>

4、自定義類型

Python 使用關鍵字 class 定製自己的類,self 表示類實例對象本身。一個自定義類內包括屬性、方法,其中有些方法是自帶的,可使用__dir__() 查看這些自帶方法。

  • 類(對象):
class Dog(object):  
    pass

#定義一個 Dog 對象,它繼承於根類 object,pass 表示沒有自定義任何屬性和方法。
  • 類的屬性:
#通過 __init__,定義 Dog 對象的兩個屬性:name、dtype。
def __init__(self, name, dtype):
     self.name = name
     self.dtype = dtype
  • 類的實例:
#wangwang 是 Dog 類的實例
wangwang = Dog('wangwang','cute_type')
  • 類的方法:
def shout(self):
    print('I\'m %s, type: %s' % (self.name, self.dtype))

注意:
(1)自定義方法的第一個參數必須是 self,它指向實例本身,如 Dog 類型的實例 dog;
(2) 引用屬性時,必須前面添加 self,比如 self.name 等;
(3)若要將某個變量或方法變爲私有變量或方法,直接在變量名或方法名前加兩個’_’;
(4)若要將(3)中的某個類下定義的私有屬性改變爲只讀或只寫的特性,可採用@property裝飾,如:

class Book(object):
	def __init__(self,name,sale):	
		self.__name = name  #私有
		self.__sale = sale  #私有
	@property
	def name(self):
		return self.__name

a_book = Book('magic_book',100000) #實例化

#直接.name就可訪問,而不需要寫成:a_book.name()函數調用的形式
a_book.name
#輸出: 'magic_book'

(4)若要將(3)中的某個類下定義的私有屬性改變爲既可讀又可寫的特性,可增加裝飾器@name.setter裝飾,也就是在@property裝飾之後,加上setter函數再包裝已被包裝爲property實例的name,如:

class Book(object):
	def __init__(self,name,sale):
		self.__name = name #私有
		self.__sale = sale #私有
	@property  
	def name(self):
		return self.__name #只讀
	@name.setter
	def name(self,new_name):
		self.__name = new_name #既可讀又可寫

a_book = Book('magic_book',100000)

a_book.name = 'magic_book_2.0'

a_book.name
#輸出: 'magic_book_2.0'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章