我和Python的Py交易》》》》》》數據類型

来源:https://www.cnblogs.com/barkingpig/archive/2018/05/23/8811303.html
-Advertisement-
Play Games

Python里的變數 門牌 Python在使用變數之前無須定義它的類型,但是必須聲明以及初始化該變數。 Python中給變數賦值就是聲明,初始化變數(也就是創建一個相應數據類型的對象,而那些數據類型就是類),變數的類型是取決於其儲存的數據。(下麵代碼中的a變數,其類型類型隨著賦值的類型不同而改變) ...


Python里的變數 ---門牌

 

Python在使用變數之前無須定義它的類型,但是必須聲明以及初始化該變數。

Python中給變數賦值就是聲明,初始化變數(也就是創建一個相應數據類型的對象,而那些數據類型就是類),變數的類型是取決於其儲存的數據。(下麵代碼中的a變數,其類型類型隨著賦值的類型不同而改變)

#type(a)返回a的數據類型
a=1
print(type(a),'整型')

a=1.1
print(type(a),'浮點型')

a=True
print(type(a),'布爾類型')

a=''
print(type(a),'字元串類型')

a=['床前明月光','地上鞋兩雙']
print(type(a),'列表')

a=(123,123)
print(type(a),'元組')

a={'好詩':'舉頭望明月,低頭思故鄉','好濕':'床前明月光,地上鞋兩雙'}
print(type(a),'字典')

a={12345,'上山打老虎'}
print(type(a),'集合')


# <class 'int'> 整型
# <class 'float'> 浮點型
# <class 'bool'> 布爾類型
# <class 'str'> 字元串類型
# <class 'list'> 列表
# <class 'tuple'> 元組
# <class 'dict'> 字典
# <class 'set'> 集合

 

數據類型

Python3 中常用的數據類型:

  • 不可變數據類型
  • Number(數字)
  • String(字元串)
  • Tuple(元組)
  • 可變數據類型
  • List(列表)
  • Dictionary(字典)
  • Sets(集合)

數據類型類型可分為:可變數據類型不可變數據類型

可變數據類型是指一個ID地址中儲存的數據是可以改變的。

不可變數據類型是指一個ID地址中儲存的數據不可以改變。

一 ,Number(數字)----不可變數據類型

1.int(整型)

int類型就是整數

Python的2.x的版本中還存在Long長整型(表示比較長的整數(比較大OR比較小)),3.x的版本中就只有int整型

整型類型能表達的數值僅僅與你的機器支持的(虛擬)記憶體大小有關,換句話說,Python能輕鬆表達很大的整數。

 

 

(嘿嘿,自己去算算對不對)

2.float(浮點數)

我們暫時的把浮點數理解為帶小數點的小數(我還會開單章來說說浮點數)

3.bool(布爾類型)

把 True 和 False 定義成關鍵字了,但它們的值還是 1 和 0,它們可以和數字相加

 

註意:

  • 1、Python可以同時為多個變數賦值,如a, b = 1, 2。
  • 2、一個變數可以通過賦值指向不同類型的對象。
  • 3、數值的除法 / 總是返回一個浮點數,要獲取整數使用 // 操作符( // 是以捨去小數部分來取整的)。
  • 4、在混合計算時,Python會把整型轉換成為浮點數。

Python還支持complex(複數),複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。

二,String(字元串)----不可變數據類型

字元串是以單引號 ' or雙引號 " or三引號 ''' 括起來的任意文本(用來括起文本的單引號,雙引號,三引號並不是文本里的字元),例如:'追求喜歡的女孩’,“有機會要追求”,‘’’沒有機會,創造機會也要追求‘‘’

當有屬於文本中的單引號  ’ ,就需要用雙引號把文本括起來;當有屬於文本中的雙引號  ",就需要用三引號把文本括起來。(當引號為文本時要用引號多的把引號少的括起來)

 

三引號可以把多行字元串括起來

使用反斜杠 \ 轉義特殊字元,如果你不想讓反斜杠發生轉義,可以在字元串前面添加一個 r,表示原始字元串:

>>>print('L\ove')
L
ove
>>> print(r'L\ove')
L\ove
>>> 

字元串的操作

[ ],[ : ],[ : : ]通過索引可以進行切片操作,和列表一樣(在列表時會詳細講)

加號 (+) 是字元串的連接符, 星號 (*) 表示覆制當前字元串,緊跟的數字為複製的次數。

str = 'I Love'
print((str+'You ')*4)

#輸出 I LoveYou I LoveYou I LoveYou I LoveYou 

註意

Python 沒有單獨的字元類型,一個字元就是長度為1的字元串。

與 C 字元串不同的是,Python 字元串不能被改變。向一個索引位置賦值,比如word[0] = ‘m’會導致錯誤。

三,tuple(元組----不可變數據類型

元組被稱為只讀列表,即數據可以被查詢,但不能被修改,所以,列表的切片操作同樣適用於元組。

元組寫在小括弧 () 里,元素之間用逗號隔開。

 同一個元組中,元素可以是不同的(元素可以為任意類型)

雖然tuple的元素不可改變,但它的元素可以為可變數據類型,比如list列表。(現在不理解沒關係,在後面解釋可變與不可變數據類型中會有詳細解釋)

tup =([11,22,33], ['無邊落木蕭蕭下', 44])
a=tup[1]
b=[11,22,33]
print(id(a))
print(id(tuple[1]))
print(id(b))
#輸出結果
#31469064
#31469064
#31927176

構造包含 0 個或 1 個元素的元組比較特殊,所以有一些額外的語法規則:

tup1 = ()    # 空元組
tup2 = (20,) # 一個元素,需要在元素後添加逗號
作用:

1 對於一些數據我們不想被修改,可以使用元組;

2 另外,元組的意義還在於,元組可以在映射(和集合的成員)中當作鍵使用——而列表則不行;元組作為很多內建函數和方法的返回值存在。

四, List(列表)----變數據類型

列表(list)是使用使用中括弧 [ ] 來解析列表。

通過列表可以對數據實現最方便的存儲、修改等操作

定義列表

a = ['','','','','','','']  # 定義一個列表
a=list(('','','','','','',''))#強制轉換

 同一個列表中,元素可以是不同的(元素可以為任意類型)

通過下標訪問列表中的元素,下標從0開始計數

 

 增(append,insert, extend

 

1.insert 方法用於將對象插入到列表中

 

a = ['', '', '', '', '', '', '']  # 定義一個列表
a.insert(0,'就是這')
print(a)
# ['就是這', '錦', '瑟', '無', '端', '五', '十', '弦']

 

2.append方法則用於在列表末尾追加新的對象

a = ['', '', '', '', '', '', '']  # 定義一個列表
a.append('最後面')
print(a)
# ['錦', '瑟', '無', '端', '五', '十', '弦', '最後面']

3.追加一個序列里的多個元素( extend)

         extend 方法可以在列表的末尾一次性追加另一個序列(可迭代對象,如 列表,字典,元組,字元串)中的多個值。

    extend 方法修改了被擴展的列表,而原始的連接操作(+)則不然,它會返回一個全新的列表。

#列表
a = ['', '', '', '', '', '', ''] b = ['', '', '', '', '', '', ''] a.extend(b) #只是對a進行擴展,無返回值(不會產生新的列表) print(a) # ['錦', '瑟', '無', '端', '五', '十', '弦', '一', '弦', '一', '柱', '思', '華', '年'] b.extend(b) print(b) # ['一', '弦', '一', '柱', '思', '華', '年', '一', '弦', '一', '柱', '思', '華', '年'] 
#字典 a = ['', '', '', '', '', '', ''] b = {'字典':123,'':456} # 可迭代對象是字典(預設是鍵) a.extend(b) print(a) # ['一', '弦', '一', '柱', '思', '華', '年', '字典', '鍵']
#元組 a = ['', '', '', '', '', '', ''] b=(1,2,3,4) a.extend(b) print(a) # ['一', '弦', '一', '柱', '思', '華', '年', 1, 2, 3, 4]
#字元串 a = ['', '', '', '', '', '', ''] b='abcd' a.extend(b) print(a) # ['一', '弦', '一', '柱', '思', '華', '年', 'a', 'b', 'c', 'd']

 刪(remove,del,pop)

1.remove刪除以值指定的元素

a = ['', '', '', '', '', '', ''] # 定義一個列表
a.remove('')  # 刪除元素'瑟',當要刪除的元素有多個相同時,刪最前面那個(就是下標最小的那個,這個函數檢索列表是從下標0開始的)
print(a)
# ['錦', '無', '端', '五', '十']

2.del刪除以下標指定的元素or整個列表

a = ['', '', '', '', '', '', ''] # 定義一個列表
del a[0]   # 刪除以下標指定的元素
print(a)
# ['無', '端', '五', '十']
del a    # 刪除整個列表

3.pop刪除列表中指定下標元素,預設刪除最後一個元素,並且返回該元素的值,如果列表為空或者索引值超出範圍會報一個異常。

# a.pop([index=-1])
a = ['', '', '', '', '', '', ''] # 定義一個列表
b=a.pop()   # 預設下標為-1  index=-1 刪除最後一個元素  
print(b)  # a.pop()會返回被刪除的元素
#
print(a) # ['一', '弦', '一', '柱', '思', '華']
a.pop(0)
print(a) # ['弦', '一', '柱', '思', '華']

 改(重新賦值)

註意:列表可以重新賦值,元組不可以

a = ['', '', '', '', '', '', '']  # 定義一個列表
a[0]=0
print(a)
# [0, '瑟', '無', '端', '五', '十', '弦']
a[1]='1'
print(a)
# [0, '1', '無', '端', '五', '十', '弦']
a[2:4]=2,3
print(a)
# [0, '1', 2, 3, '五', '十', '弦']
a[4::2]=4,7
print(a)
# [0, '1', 2, 3, 4, '十', 7]

 

查(切片,index)

1.切片操作(列表的切片,字元串,元組的切片操作都是一樣的)

切片---取一個元素

a = ['','','','','','',''] # 定義一個列表

>>> a[0]
''
>>> a[6]
''
>>> a[-1]
 ''
>>> a[-2] #還可以倒著取
 '

 

 切片---取多個元素(得到的是一個新的列表

a = ['', '', '', '', '', '', '']  # 定義一個列表

# a[起始下標:結束下標:移動的方向和步幅]

b = a[0:6]
print(b)
# ['錦', '瑟', '無', '端', '五', '十']
# a[0:6]取頭不取尾
b = a[0:]
print(b)
# ['錦', '瑟', '無', '端', '五', '十', '弦']
# a[0:]才可以去到尾
b = a[:]
print(b)
# ['錦', '瑟', '無', '端', '五', '十', '弦']
# b = a[:]從頭取到尾

# 當a[::]的的二個 : 沒有時,我們就預設其步幅為1。
# 步幅: 步幅為1時是“走一步“取一個。例如,'錦'走一步是'瑟'
#      步幅為2時時“走兩步”取一個。例如,'錦'走兩步是'無'
# 方向:步幅為正數時(順著取),是由左向右走;步幅為負數時(倒著取),是由右向左走

b = a[0:6:2]
print(b)
# ['錦', '無', '五']
# 步幅為2
b = a[0:-1:2]
print(b)
# ['錦', '無', '五']
b = a[6:1:-1]
print(b)
# ['弦', '十', '五', '端', '無']
# 步幅為-2
b = a[-1:1:-2]
print(b)
# ['弦', '五', '無']

2.靠元素找下標 (index)

  該方法可以避免遍歷列表來找元素下標。

       Python 列表 index() 方法用於從列表中找出某個對象第一個匹配項的索引位置,如果這個對象不在列表中會報一個異常。

  index() 方法語法:

a.index(value, start, stop)

    value-- 指定檢索的對象。
    start -- 可選參數,開始索引,預設為0。(可單獨指定)
    stop -- 可選參數,結束索引,預設為元祖的長度。(可單獨指定)

a = ['', '', '', '', '', '', '', '', '', '', '', '', '', '']
b = a.index('')
print(b)  # 0
b = a.index('',1)
print(b)  # 2
b = a.index('',0,0)
print(b)
# b = a.index('弦',0,0)
# ValueError: '弦' is not in list

其他

1.統計( count)

       count 方法統計某個元素在列表中出現的次數

a = ['', '', '', '', '', '', '', '', '']  # 定義一個列表
b = a.count('')  # 統計'弦'在列表a中出現的次數
print(b)  # 3

2.翻轉(reverse)

       reverse 方法將列表中的元素反向存放。

       該方法只是對列表操作,無返回值(不會產生新的列表)

a = ['', '', '', '', '', '', '']
a.reverse()
print(a)  # ['年', '華', '思', '柱', '一', '弦', '一']

 3.複製(copy())

因為列表的元素可以是可變和不可變數據類型,所以就涉及到了深淺複製

a=['', '', '', '', '', '', '', '', '', '', '', '', '', '']
b=a.copy()
print(b) # ['錦', '瑟', '無', '端', '五', '十', '弦', '一', '弦', '一', '柱', '思', '華', '年']

 

五,Dictionary(字典)----變數據類型

 字典是python中唯一的映射類型,採用鍵值對(key-value)的形式存儲數據。

python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。

可哈希表示key必須是不可變類型,如:數字、字元串、元組。

 

dic1={'name':'BarkingPig',(1,):[1,2,3],2:13}
dic2=dict((('name','BarkingPig'),((1,),[1,2,3]),(2,13)))

增(‘=’,setdefault())

1.‘=’

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川'}
dic[3] = '飛流直下三千尺'
print(dic)
#{1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺'}

2.添加查詢鍵值對(setdefault())

Python 字典 setdefault() 方法和 get() 方法類似,返回指定鍵的值,如果鍵不在字典中,將會添加鍵並將值設置為一個指定值,預設為None。

而 get() 不會添加鍵。

dic.setdefault(key[,default=None])

key -- 字典中要查找的鍵。
default -- 可選參數,如果指定鍵的值不存在時,返回該值,預設為 None

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川'}
dic.setdefault(3)
dic.setdefault(4,'疑是銀河落九天')
print(dic)
#{1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: None, 4: '疑是銀河落九天'}

刪(del,pop(),clear(),popitem()

1.刪除查詢到的鍵值對or整個字典(del)

刪除整個字典

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
del dic
print(dic)
# NameError: name 'dic' is not defined

刪除鍵對應鍵值對

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
del dic[1]
print(dic)
# {2: '遙看瀑布掛前川', 3: '飛流直下三千尺', 4: '疑是銀河落九天'}

2刪除指定鍵值對(pop())

pop() 方法刪除給定鍵所對應的鍵/值對,並返回被刪除的值。給定鍵如果不在字典中,則必須設置一個default值,否則會報錯,此時返回的就是default值。

dic.pop(key[,default])

    key: 要刪除的鍵/值對所對應的鍵
    default: 可選參數,給定鍵不在字典中時必須設置,否者會報錯(沒有預設值),此時返回default值。

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
a=dic.pop(4,True)
print(dic,a) # {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺'} 疑是銀河落九天
a=dic.pop(5,True)
print(dic,a) # {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺'} True

3.置空(clear())

clear() 方法用於刪除字典內所有元素(就是把字典置空,不刪除字典)。

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
dic.clear()
print(dic) # {}

4..刪除“最後一對鍵值對”(popitem())

popitem() 方法隨機返回並刪除字典中的一個鍵/值對(一般刪除末尾對)。

為什麼是隨機刪除呢?因為字典是無序的,沒有所謂的“最後一項”或是其它順序。在工作時如果遇到需要逐一刪除項的工作,用popitem()方法效率很高。

如果字典已經為空,卻調用了此方法,就報出KeyError異常。

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
a=dic.popitem()
print(dic,a) # {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺'} (4, '疑是銀河落九天')

 

改(‘=’,update())

1.‘=’

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川',3:'飛流直下三千尺',4:'疑是銀河落九天'}
dic[1]='黃河之水天上來'
print(dic) #{1: '黃河之水天上來', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺', 4: '疑是銀河落九天'}

 

2.改,擴展(update())

update() 方法用於更新字典中的鍵/值對,可以修改存在的鍵對應的值,也可以添加新的鍵/值對到字典中

dic= {1: '日照香爐生紫煙', 'two':'遙看瀑布掛前川' }
dic.update(two='黃河之水天上來')  # 修改鍵對應的值,鍵為數字時不適用
print(dic) # {1: '日照香爐生紫煙', 'two': '黃河之水天上來'}
dic1={3:'飛流直下三千尺',4:'疑是銀河落九天'}
dic.update(dic1)  # 擴展字典
print(dic) # {1: '日照香爐生紫煙', 'two': '黃河之水天上來', 3: '飛流直下三千尺', 4: '疑是銀河落九天'}

查(‘=’,get(),keys(),values(),items(),in/not in,sorted())

1.‘=’

dic = {1: '日照香爐生紫煙', 2: '遙看瀑布掛前川', 3: '飛流直下三千尺', 4: '疑是銀河落九天'}
a=dic[1]
print(a) # 日照香爐生紫煙

2.鍵找值(get())

get() ,返回指定鍵的值,如果鍵不在字典中,返回一個指定值,預設為None。

dic = {1: '日照香爐生紫

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2018年5月4日,Angular6.0.0版正式發佈,新版本主要關註底層框架和工具鏈,目的在於使其變得更小更快。下麵就介紹下新版本的一些主要新特性,供大家參考。 ng update ng update 是新增的一個cli命令。通過ng update不僅可以保持正確的版本依賴,而且能保持依賴關係的同 ...
  • javascript和css文件中採用相對路徑,其基準路徑是完全不同的。 1.javascript引用資源(比如圖片)相對路徑是以宿主路徑(被引用的網頁比如你在首頁index.php引用了某js文件,則index.php即為宿主)所處位置為基準。 2.css引用資源(比如圖片)相對路徑是以.css文 ...
  • ...
  • 安裝 概念 在redux中分為3個對象:Action、Reducer、Store Action 1. 對行為(如用戶行為)的抽象 1. Action 就是一個普通 JavaScript 對象。如: (其中type欄位是約定也是必須的) 1. 作為Reducer的參數 Reducer 1. 一個普通的 ...
  • select下拉框選中的值,用jquery大家應該都會獲取, 如果select是多選的,也這麼獲取的話,則只能獲取到第一個選項的value值,但是有一個神奇的發現,如果是: 獲取text,則可以直接列印出選中的兩個選項的文本值的相連字元串,而不是只是第一個的text......... 獲取多選框的v ...
  • 1. vue-cli 簡介 Vue-cli 是 vue的設計者,為提升開發效率而提供的一個腳手架工具,可通過vue-cli快速構造項目結構 2. vue-cli 安裝步驟 安裝npm 或 cnpm 安裝webpack、webpack-cli 建議全局安裝一次: 建議全局安裝一次: 本地安裝一次: 本 ...
  • 下午學習了設計模式里的策略模式,寫個筆記,做個總結 策略模式的UML圖為: 舉個例子: 我們每個人都想走向人生巔峰,但是怎麼走向人生巔峰呢??有三個方法:1、當總經理;2、出任CEO;3、娶白富美。正好我身邊有三個小伙伴,他們就想通過這三種策略來走向人生巔峰。。。 首先是走向人生巔峰的策略介面 然後 ...
  • Django運算表達式與Q對象/F對象 1 模型查詢 概述: 1 查詢集:表示從資料庫中獲取的對象的集合 2 查詢集可以有多個過濾器,通過 邏輯運算符連接 3 過濾器就是一個函數,基於所給的參數限制查詢的結果,類似MySQL模糊查詢中where語句 4 查詢集等同select語句 2 查詢集 特點: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...