python數據類型
一、數值型
二、字符型
三、容器型數據類型
數值型
1、整型
x = 3 print(id(x)) x = 5 print(id(x)) # id(): 返回一個整數,代表變量在內存中的地址 # 以上兩個id返回的值明顯不一樣,說明變量值的地址是不一樣的
2、浮點型
浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型
注: 浮點數的取值范圍和精度一般無限制,但是浮點數運算可能存在誤差,也就是可能有不確定尾數
x = 2.23 print(x) d = 4.3 c = d-x print(c)
3、布爾型
布爾數據類型,簡稱布爾類型,在 Python 中用 `bool`表示。 bool 類是 int 類的子類。 布爾類型提供了兩個布爾值來表示真(對)或假(錯),在 Python 中分別用 `True`(真或對)或`False`(假或錯)來表示。
print(True) # True 首字母要大寫 print(False) # False 首字母要大寫 print(type(True)) # 查看 True 的類型 print(type(False)) # 查看 False 的類型
結果:
True False <class 'bool'> <class 'bool'>
字符型
1.字符串的表示
(1)用單引號、雙引號或三引號括起來的符號系列稱為字符串, 並且單引號、雙引號、三單引號、三雙引號可以互相嵌套,用來表示復雜字符串
1 "wyb", 'Hello, World', "python", '''Tom said, "Let's go"'''都是字符串
(2)空串表示為'', ""
1 # 下面是空串: 2 msg = '' 3 name = ""
(3)三引號表示的字符串可以換行,支持排版較為復雜的字符串;三引號還可以在程序中表示較長的注釋
1 msg = ''' 2 我是誰 3 我在哪 4 我在干什么 5 ''' 6 print(msg) # 字符串換行
1 ''' 2 三引號中可以寫多行注釋 3 這里可以寫多行注釋 4 '''
(4)不加引號的字符串會被系統認為是變量
>>> name = jack Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'jack' is not defined >>> jack = "wyb" >>> name = jack >>> name 'wyb'
字符串常用方法
(1)字符串拼接:
+: 直接將兩個字符串相加 *: 字符串復制多次
join(seq) 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串
1 >>> name = "wyb" 2 >>> age = "21" 3 >>> name + age 4 'wyb21' 5 >>> name*3 6 'wybwybwyb'
1 >>>''.join("python") 2 'python' 3 >>>'123'.join("python") 4 'p123y123t123h123o123n'
注: 字符串只能與字符串進行拼接,不能與其他數據類型一起拼接!
1 >>> name = "wyb" 2 >>> age = 21 3 >>> name + age 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: must be str, not int
(2)大小寫:
capitalize() 將字符串的第一個字符轉換為大寫
swapcase() 將字符串中大寫轉換為小寫,小寫轉換成大寫
upper() 轉換字符串中所有小寫字母為大寫
lower() 轉換字符串中所有大寫字符為小寫
title() 返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫
>>> s = "python web framework" >>> s.capitalize() 'Python web framework' >>> s 'python web framework' >>> s.upper() 'PYTHON WEB FRAMEWORK' >>> s.lower() 'python web framework' >>> s.title() 'Python Web Framework' >>> s = "ABCDefg" >>> s.swapcase() 'abcdEFG'
(3)字符串填充:
center(width, fillchar) 返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格
ljust(width[, fillchar]) 返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格。
rjust(width,[, fillchar]) 返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串
zfill (width) 返回長度為 width 的字符串,原字符串右對齊,前面填充0
>>> s = "python" >>> s.center(20, '*') '*******python*******' >>> s.ljust(10, '*') 'python****' >>> s.rjust(10, '*') '****python' >>> s.zfill(10) '0000python'
(4)數值計算:
len(string) 返回字符串長度
count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數,str可以是一個字符也可以是多個字符
>>> s = "python" >>> len(s) 6 >>> s = "111222abcdefga" >>> s.count(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not int >>> s.count('1') 3 >>> s.count('1111') 0 >>> s.count('111') 1 >>> s.count('a') 2
容器型數據類型
1、列表
# append() 將參數作為元素添加到列表中去 a = [1, 2] a.append([3, 4]) print(a) # [1, 2, [3, 4]] # extend() 將參數列表逐個添加到列表中去 a = [1, 2] a.extend([3, 4]) print(a) # [1, 2, 3, 4] # insert(index, object) 在指定位置index前插入元素object a = [1, 2, 3, 4] a.insert(1, [3, 4]) print(a) # [1, [3, 4], 2, 3, 4] 復制代碼 # 修改元素有兩個方法,一個是通過下標,一個是通過切片(切片是左閉右開區間) a = [1, 2, 3, 4] # 方式一:下標修改 a[1] = "中" print(a) # [1, '中', 3, 4] # 方式二:切片修改,也可以實現刪除 a[2:3] = ["天", "下", "大", "同"] # [1, '中', '天', '下', '大', '同', 4] print(a) a[2:3] = [] print(a) # [1, '中', '下', '大', '同', 4] 復制代碼 # a.index(x,begin,.end) # 在a中的begin和end之間,查找字符x的下標,沒有會報錯 a = [1, 2, 3] print(a.index(2)) # 1 復制代碼 列表.count(x, begin, end) # 查詢x在列表中的個數 del 列表[下標值] # 根據下標進行刪除 列表.pop() # 刪除最后一個元素,也可以針對指定的下標刪除,會返回刪除的內容 列表.remove(元素) # 將指定的元素從列表中刪除 列表.sort(reverse=True) # sort方法是將列表按特定順序重新排列,默認為由小到大,參數reverse=True可改為倒序,由大到小。 列表.reverse() # reverse方法是將list逆置。
2、字典
字典表示為dict,使用鍵值對的形式來存儲數據的,使用的時候用花括號({})來對這些鍵值對進行封裝,而且內部也是無序存儲的。相對於list來說,字典的查詢速度快,不會隨着key的增加而變慢,但是需要大量的內存。這個通過key計算位置的算法被稱為哈希算法。
如下:
注:鍵可以使用:元組,數字,字符串,如果是布爾值,會忽略,如果是字典或者列表,會直接報錯。
如果鍵重復,只保留最后一個
常用字典方法
# 取字典值可以用鍵來取,如果寫的是字典中沒有的鍵,會報錯,一般用get來取值,沒有對應的鍵會返回None,get的第二個參數可以設置返回的值 a = {"name": "張三", "age": 18, "sex": "男"} print(a["name"]) # 張三 print(a.get("name")) # 張三 print(a.get("nam")) # None print(a.get("nam", "找不到")) # 找不到 print(a["nam"]) # 報錯 復制代碼 # 添加一個鍵值對,直接用:字典名["鍵名"] = 值 a = {"name": "張三", "age": 18, "sex": "男"} a["address"] = "北京" print(a) 復制代碼 # 字典名.keys() 返回字典所有key,並放在一個類似列表的dict_keys類中 # 字典名.values() 返回字典所有value,並放在一個類似列表的dict_values類中 # 字典名.items() 返回所有key和values,所有的鍵值對分別構成一個元組,並放在一個類似列表的dict_values類中 a = {"name": "張三", "age": 18, "sex": "男"} print(a.keys()) print(type(a.keys())) print(a.values()) print(type(a.values())) print(a.items()) print(type(a.items())) # 注:可以在for循環中用拆包的方式分別獲取key和value值 復制代碼 復制代碼 # 刪除一個鍵值對可以用:del 字典名["鍵名"] # 刪除字典則是:del 字典名 # pop也可以刪除一個鍵值對:字典名.pop(鍵名,參數二),如果沒有對應的鍵,返回第二個參數,不寫的話會直接報錯 # 隨機刪除一個鍵值對:字典名.popitem() # clear是清空字典 a = {"name": "張三", "age": 18, "sex": "男"} del a["name"] print(a) # {'age': 18, 'sex': '男'} print(a.pop("hobby", "沒有")) a.popitem() # {'sex': '男'} print(a) a.clear() print(a) # {} del a print(a) # a被刪除,not defined 復制代碼 其他: di.setdefault("k111","123") # 設置值,如果鍵存在,則返回原有值,如果不存在,則將第一個參數作為鍵,第二個參數作為值插入到字典中,並返回值 di.update({"k1":"111","k2":"324"}) # 設置值,如果已經存在則覆蓋,不存在則填入,參數中也可以用k1=23,k2="daf"這種格式 根據序列創建字典,di.fromkeys({"k1","k2","k3"],123) # 參數中,第一個列表是所有的key,第二個是指定統一的
3、元組
元組不可以增刪改
元組 (Tuple) 是 Python 中基本數據結構之一,與列表類似,但元組中的元素不允許被修改,因此元組也被稱作 只讀列表 。 元組使用小括號 - () 包裹,元素間使用逗號 - , 分隔,元組中的元素可以是字符串、數字、列表、元組等其他數據類型。
a = (1, 2, 3, [4, 5]) a[3][1] = 9 print(a) # (1, 2, 3, [4, 9])
4、集合
集合的兩大功能:
- 集合可以實現去重的功能
- 集合可以實現關系測試:交集;差集;並集;是否子集;是否沒有交集
1. 集合的定義
集合里面的元素是沒有重復的
定義一個空集合:第一種方法的定義是錯誤的,生成的是一個字典;第二種方法才是正確的定義一個空集合的方法。
2. 集合的特性
集合是無序的,不重復的數據類型,因此不支持索引;切片;重復和連接,只滿足成員操作符和for循環。
3. 集合的增刪查
增加:
1. add()—增加單個元素
2. update()—增加多個元素
刪除:
1. pop()—默認刪除集合的第一個元素,這里與列表剛好相反,尤其注意,不可相互混淆。
2. remove()—刪除指定的元素
3. clear()—清空集合元素
總結
可變數據類型:列表,字典,集合
不可變數據類型:數值類型,字符串,元組
可變數據類型實現某個功能,直接改變可變的數據類型;
不可變數據類型實現某個功能,需要將結果賦值給另外一個變量;
是否實現for循環
可迭代數據類型:str,list,tuple,dict,set
不可迭代數據類型:數值類型
是否支持索引,切片,重復和連接特性
有序的數據類型:str,list,tuple支持
無序的數據類型:dict,set不支持