Python常見數(shù)據(jù)類型處理詳細代碼示例
一、數(shù)據(jù)類型分類
Python3 中常見的數(shù)據(jù)類型有:
- Number(數(shù)字)
- String(字符串)
- bool(布爾類型)
- List(列表)
- Tuple(元組)
- Set(集合)
- Dictionary(字典)
Python3 的六個標準數(shù)據(jù)類型中:
不可變數(shù)據(jù)(3 個): Number(數(shù)字)、String(字符串)、Tuple(元組);
可變數(shù)據(jù)(3 個): List(列表)、Dictionary(字典)、Set(集合)。
基本
- Number(數(shù)字)
- String(字符串)
多字段
- List(列表)
- Tuple(元組)
- Dictionary(字典)
- Set(集合)
# List(列表) my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] # Tuple(元組)(值不能修改) my_tuple = (1, 2, 3, 4) # Dictionary(字典) my_info = {'name': '張三', 'age': 18, 'address': '北京市'} # Set(集合) set01 = {1, 2, 3, 4}
二、基本數(shù)據(jù)類型
1、Number(數(shù)字)
- Python3 支持 int、float、bool、complex(復數(shù))。
- 在Python 3里,只有一種整數(shù)類型 int,表示為長整型,沒有 python2 中的 Long。
- 像大多數(shù)語言一樣,數(shù)值類型的賦值和計算都是很直觀的。
- 內(nèi)置的
type()
函數(shù)可以用來查詢變量所指的對象類型。 - Python可以同時為多個變量賦值,如a, b = 1, 2。
- 一個變量可以通過賦值指向不同類型的對象。
- 數(shù)值的除法包含兩個運算符:/ 返回一個浮點數(shù),// 返回一個整數(shù)。
- 在混合計算時,Python會把整型轉(zhuǎn)換成為浮點數(shù)
>>> 5 + 4 # 加法 9 >>> 4.3 - 2 # 減法 2.3 >>> 3 * 7 # 乘法 21 >>> 2 / 4 # 除法,得到一個浮點數(shù) 0.5 >>> 2 // 4 # 除法,得到一個整數(shù) 0 >>> 17 % 3 # 取余 2 >>> 2 ** 5 # 乘方 32
2、String(字符串)
- 反斜杠可以用來轉(zhuǎn)義,使用r可以讓反斜杠不發(fā)生轉(zhuǎn)義。
- 字符串可以用+運算符連接在一起,用*運算符重復。
- Python中的字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
- Python中的字符串不能改變。
print(str[0:-1]) # 打印字符串第一個到倒數(shù)第二個字符(不包含倒數(shù)第一個字符) print(str[0]) # 打印字符串的第一個字符 print(str[2:5]) # 打印字符串第三到第五個字符(包含第五個字符) print(str[2:]) # 打印字符串從第三個字符開始到末尾 str_01 = 'my name is:{}, age:{}' print(str_01.format('張三', 18)) str_02 = 'my name is:{name}, age:{age}' print(str_02.format(name='張三', age=18)) str_03 = 'my name is:{name}, age:{age}' print(str_03.format_map({'name': '張三', 'age': 18}))
Python 使用反斜杠\
轉(zhuǎn)義特殊字符,如果你不想讓反斜杠發(fā)生轉(zhuǎn)義,可以在字符串前面添加一個r
,表示原始字符串:
print('Ru\noob') Ru oob print(r'Ru\noob') Ru\noob
encode()
、decode()
方法
encode()
方法以指定的編碼格式編碼字符串。errors參數(shù)可以指定不同的錯誤處理方案。decode()
方法以指定的編碼格式解碼 bytes 對象。默認編碼為 ‘utf-8’。- 該方法返回編碼后的字符串,它是一個 bytes 對象。
str.encode(encoding='UTF-8',errors='strict') bytes.decode(encoding="utf-8", errors="strict")
- encoding – 要使用的編碼,如: UTF-8。
- errors – 設置不同錯誤的處理方案。默認為 ‘strict’,意為編碼錯誤引起一個UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通過 codecs.register_error() 注冊的任何值。
#!/usr/bin/python3 str = "菜鳥教程" str_utf8 = str.encode("UTF-8", 'strict') str_gbk = str.encode("GBK") print("UTF-8 編碼:", str_utf8) print("GBK 編碼:", str_gbk) print("UTF-8 解碼:", str_utf8.decode('UTF-8')) print("GBK 解碼:", str_gbk.decode('GBK', 'strict'))
結果:
UTF-8 編碼: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b' GBK 編碼: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc' UTF-8 解碼: 菜鳥教程 GBK 解碼: 菜鳥教程
3.2 format格式化字符串
# 1、 print('{}網(wǎng)址: "{}!"'.format('菜鳥教程', 'www.runoob.com')) # 2、 print('{name}網(wǎng)址: {site}'.format(name='菜鳥教程', site='www.runoob.com')) # 3、 print('{0} 和 {1}'.format('Google', 'Runoob')) # 可以任意組合 print('站點列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao')) # 4、 table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))
3、Bool(布爾類型)
布爾類型即 True 或 False。
在 Python 中,True 和 False 都是關鍵字,表示布爾值。
布爾類型可以用來控制程序的流程,比如判斷某個條件是否成立,或者在某個條件滿足時執(zhí)行某段代碼。
布爾類型特點:
- 布爾類型只有兩個值:True 和 False。
- 布爾類型可以和其他數(shù)據(jù)類型進行比較,比如數(shù)字、字符串等。在比較時,Python 會將 True 視為 1,F(xiàn)alse 視為 0。
- 布爾類型可以和邏輯運算符一起使用,包括 and、or 和 not。這些運算符可以用來組合多個布爾表達式,生成一個新的布爾值。
- 布爾類型也可以被轉(zhuǎn)換成其他數(shù)據(jù)類型,比如整數(shù)、浮點數(shù)和字符串。在轉(zhuǎn)換時,True 會被轉(zhuǎn)換成 1,F(xiàn)alse 會被轉(zhuǎn)換成 0。
a = True b = False # 比較運算符 print(2 < 3) # True print(2 == 3) # False # 邏輯運算符 print(a and b) # False print(a or b) # True print(not a) # False # 類型轉(zhuǎn)換 print(int(a)) # 1 print(float(b)) # 0.0 print(str(a)) # "True"
Python3 中,bool
是 int
的子類,True
和False
可以和數(shù)字相加,True==1、False==0
會返回True
,但可以通過is
來判斷類型。
a1 = True print(type(a1)) print(a1 + 100) <class 'bool'> 101
4、Bytes
字符串轉(zhuǎn)為Bytes
# 解析為bytes:b'Hello,World' print('Hello,World'.encode())
Bytes
轉(zhuǎn)為字符串
# 創(chuàng)建一個bytes對象 bytes_data = b'Hello, World!' # b'Hello, World!' print(bytes_data) # 將bytes對象轉(zhuǎn)換為字符串 string_data = bytes_data.decode('utf-8') print(string_data)
三、多值存儲
1、List(列表)
增、刪、改、查:
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] # 1、增 my_list.append('333') # 將另一個集合中添加到列表中 insert_list = [1, 23] my_list.extend(insert_list) # 指定位置前插入元素 my_list.insert(2, '34') # 2、刪 my_list.remove() # 3、改 my_list[1] = '張三' # 4、查 # 查看是否存在于集合中 print('張三' in my_list) # 查詢所在索引 my_list.index('張三') my_list.index('張三', 1, 4) # 查詢數(shù)量 my_list.count('張三')
其它
# 循環(huán) for one in my_list: # print(one) print(one, end='==') print(one, end='==\n%%% ') # 排序 # 排序-正序 my_list.sort() # 排序-倒敘 my_list.sort(reverse=True)
函數(shù)內(nèi)置方法
方法 | 序號 |
---|---|
list.append(obj) | 在列表末尾添加新的對象 |
list.count(obj) | 統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù) |
list.extend(seq) | 在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表) |
list.index(obj) | 從列表中找出某個值第一個匹配項的索引位置 |
list.insert(index, obj) | 將對象插入列表 |
list.pop([index=-1\]) | 移除列表中的一個元素(默認最后一個元素),并且返回該元素的值 |
list.remove(obj) | 移除列表中某個值的第一個匹配項 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 對原列表進行排序 |
list.clear() | 清空列表 |
list.copy() | 復制列表 |
2、Tuple(元組)
Python的元組與列表類似,不同之處在于元組的元素不能修改。
# tuple元組 my_tuple = (1, 2, 3, 4) # 查-某個值 print(my_tuple[1]) # 查—查詢所在索引位置(前閉右開區(qū)間)(起始索引:0) print(my_tuple.index(2, 1, 3)) # 查-某值數(shù)量 print(my_tuple.count(1))
Python元組包含了以下內(nèi)置函數(shù)
函數(shù) | 方法及描述 | 實例 |
---|---|---|
len(tuple) | 計算元組元素個數(shù) | >>> tuple1 = ('Google', 'Runoob', 'Taobao') |
max(tuple) | 返回元組中元素最大值 | max(tuple2) |
min(tuple) | 返回元組中元素最小值 | min(tuple2) |
tuple(iterable) | 將可迭代系列轉(zhuǎn)換為元組 | tuple1=tuple(['Google', 'Taobao', 'Runoob', 'Baidu']) |
3、Dictionary(字典)
增刪改查
my_info = {'name': '張三', 'age': 18, 'address': '北京市'} # 1、查詢元素 # 查-查詢單個(無值異常) print(my_info['name']) print(my_info['age']) # 查-查詢單個(無值返回 None) print(my_info.get('name1')) # 查-查詢單個(無值返回 指定值) print(my_info.get('name2', '李四')) # 2、修改元素 my_info['name'] = '王五' # 3、添加元素 # 添加元素-鍵不存在則添加 my_info['id'] = 1234 # 4、刪除元素 # 刪除元素-刪除單個元素 del my_info['id'] # 刪除-刪除字典(查詢會報錯 del my_info # 刪除—清空字段(值為{}) my_info.clear()
其它API
# 5、其它API # 測量字典中,鍵值對的個數(shù) print(len(my_info)) # 返回一個包含字典所有KEY的列表 print(my_info.keys()) # 返回一個包含字典所有value的列表 print(my_info.values()) # 返回一個包含所有(鍵,值)元祖的列表 print(my_info.items())
方法 | 函數(shù)及描述 |
---|---|
dict.clear() | 刪除字典內(nèi)所有元素 |
dict.copy() | 返回一個字典的淺復制 |
dict.fromkeys() | 創(chuàng)建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
dict.get(key, default=None) | 返回指定鍵的值,如果鍵不在字典中返回 default 設置的默認值 |
key in dict | 如果鍵在字典dict里返回true,否則返回false |
dict.items() | 以列表返回一個視圖對象 |
dict.keys() | 返回一個視圖對象 |
dict.setdefault(key, default=None) | 類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default |
dict.update(dict2) | 把字典dict2的鍵/值對更新到dict里 |
dict.values() | 返回一個視圖對象 |
pop(key[,default\]) | 刪除字典 key(鍵)所對應的值,返回被刪除的值。 |
popitem() | 返回并刪除字典中的最后一對鍵和值。 |
4、Set(集合)
- 集合(set)是一個無序的不重復元素序列。
- 集合中的元素不會重復,并且可以進行交集、并集、差集等常見的集合操作。
- 可以使用大括號 { } 創(chuàng)建集合,元素之間用逗號 , 分隔, 或者也可以使用 set() 函數(shù)創(chuàng)建集合。
# 0、創(chuàng)建集合 set01 = {1, 2, 3, 4} # 直接使用大括號創(chuàng)建集合 set02 = set([4, 5, 6, 7]) # 使用 set() 函數(shù)從列表創(chuàng)建集合 # 1、增 # 1-1 將元素 x 添加到集合 s 中,如果元素已存在,則不進行任何操作。 set01.add(100) # 1-2 添加元素,且參數(shù)可以是列表,元組,字典等 set01.update([1, 2, ]) # 2、刪 # 2-1 將元素 x 從集合 s 中移除,如果元素不存在,則會發(fā)生錯誤 set01.remove(1) # 2-2 移除集合中的元素,且如果元素不存在,不會發(fā)生錯誤 set01.discard(1) # 2-3 隨機刪除集合中的一個元素 s.pop() # 3、其它 # 判斷元素是否在集合內(nèi)(False) print('1' in set03) # 計算集合元素個數(shù) print(len(set01)) # 清空集合 set01.clear()
集合內(nèi)置方法完整列表
方法 | 描述 |
---|---|
add() | 為集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷貝一個集合 |
difference() | 返回多個集合的差集 |
difference_update() | 移除集合中的元素,該元素在指定的集合也存在。 |
discard() | 刪除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。 |
issubset() | 判斷指定集合是否為該方法參數(shù)集合的子集。 |
issuperset() | 判斷該方法的參數(shù)集合是否為指定集合的子集 |
pop() | 隨機移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回兩個集合中不重復的元素集合。 |
symmetric_difference_update() | 移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。 |
union() | 返回兩個集合的并集 |
update() | 給集合添加元素 |
len() | 計算集合元素個數(shù) |
四、其它
1、Json
方法 | 作用 | 返回類型 |
---|---|---|
eval(字符串表達式) | eval() 函數(shù)用來執(zhí)行一個【字符串表達式】,并返回表達式的值。 | list、dict、tuple |
json.dumps() | 將python對象編碼成Json字符串 | 返回json字符串 |
json.loads() | 將Json字符串解碼成python對象 | 返回python對象 |
json.dump() | 將python中的對象轉(zhuǎn)化成json儲存到文件中 | 無返回 |
json.load() | 將文件中的json的格式轉(zhuǎn)化成python對象提取出來 | 返回python對象 |
五、其它函數(shù)
1、print()
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects
:復數(shù),表示可以一次輸出多個對象。輸出多個對象時,需要用 , 分隔。sep
:用來間隔多個對象,默認值是一個空格。end
:用來設定以什么結尾。默認值是換行符 \n,我們可以換成其他字符串。file
:要寫入的文件對象。flush
:輸出是否被緩存通常決定于 file,但如果 flush 關鍵字參數(shù)為 True,流會被強制刷新。
# 1 2 3 4 5 print('1', '2', '3', '4', '5') # 1+2+3 print('1', '2', '3', sep='+') # 1++2++3== print('1', '2', '3', sep='++', end='==')
總結
到此這篇關于Python常見數(shù)據(jù)類型處理的文章就介紹到這了,更多相關Python數(shù)據(jù)類型處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pyppeteer執(zhí)行js繞過webdriver監(jiān)測方法下
這篇文章主要為大家介紹了pyppeteer上執(zhí)行js并繞過webdriver監(jiān)測常見方法的上篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-04-04Win10系統(tǒng)下安裝labelme及json文件批量轉(zhuǎn)化方法
這篇文章主要介紹了Win10系統(tǒng)下安裝labelme及json文件批量轉(zhuǎn)化的方法,文中較詳細的給大家介紹了安裝過程 ,需要的朋友可以參考下2019-07-07python3 自動打印出最新版本執(zhí)行的mysql2redis實例
這篇文章主要介紹了python3 自動打印出最新版本執(zhí)行的mysql2redis實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04