PHP 工程師學 Python 資料型別

湯青松發表於2019-07-21

一、背景

繼上篇文章比較了PHP與Python語法之後,這周又學習了Python資料型別,準備從通過這篇文章給自己進行一些總結,也給其他讀者一些參考。

二、內容概要

  1. 字串(str)
  2. 列表(list)
  3. 元組(tup)
  4. 字典(dict)
  5. 資料操作

三、字串(str)

Python中字串操作基本和PHP類似,下面介紹一下Python中字串的常規操作方法

3.1 索引下標取值

在PHP中可以通過索引下標的方式獲取到字串中的某一個字元,在Python中也同樣可以獲取到,如下程式碼所示

#定義字串
testStr = 'tangqingsong'
#通過索引下標獲取字元
print(testStr[1])

#列印結果  a

3.2 切片

在Python中有一個非常好用的功能叫做切片,比如當你想獲取字串中第n個字元到第m個字元中的區間字元,使用Python的切片實現非常簡單,如下程式碼所示

#定義字串
testStr = 'tangqingsong'
#通過索引下標獲取字元
print(testStr[0:4])

#列印結果  tang

3.3 迴圈

在Python中for不僅僅可以迴圈類似於PHP中的陣列,還可以迴圈字串,如下程式碼所示

testStr = 'tangqingsong'

for value in testStr[0:4]:
    print(value)

#列印結果  tang

3.4 字母大小寫轉換

在Python中實現字母大小寫轉換和PHP的寫法稍有不同,Python中操作有點類似於PHP操作物件的感覺,如下程式碼所示

#定義字串
testStr = 'tQs'
#大寫轉換
aStr = testStr.upper()
#小寫轉換
bStr = testStr.lower()

print(aStr,bStr)

#列印結果   TQS tqs

3.4 分割和合並

接著我們再來看一下怎麼把字串切割與合併,如下程式碼所示

s = 'tang|qing|song'
l = s.split('|')

print(l)
#列印結果 ['tang', 'qing', 'song']

s2 = '|'.join(['tang', 'qing', 'song'])
print(s2)
#列印結果 tang|qing|song

3.5 字串首尾過濾

在PHP中字串首尾過濾通常使用trim()函式過濾,而Python中字串首尾過濾的語法有點類似於PHP操作物件的方式,程式碼如下所示

# 去掉邊界上的內容 strip
s1 = '   tang    qing   song   '

print(s1.strip())
#列印結果 ‘tang qing song’

如果你想指定刪除某一個字元,程式碼如下所示

s2 = '<湯青松>'
print(s2.strip('>'))

#列印結果 '<湯青松'

四、列表(list)

在Python中有一種叫做list的資料型別,在PHP中我們通常稱之為索引陣列

4.1 資料定義

定義list資料方式如下程式碼所示

#定義一個list資料
lst = ['張三','李四','王五','馬六','田七']

取資料方式和PHP基本一致,比如想獲取lst裡面的李四,可以這樣獲取

$name = lst[1]

4.2 切片

除了正向取資料還可以反著順序取資料,比如你要獲取馬六,你可以這樣寫

$name = lst[-2]

在Python中有一種獲取資料非常簡便的方法,叫做切片,比如你想獲取lst中的李四到馬六區間的資料,在PHP中你得用array_slice函式去擷取,但在Python則非常方便,如下程式碼所示

print(lst[1:4])

# 列印結果 ['李四','王五','馬六']

如果你想隔一個資料取一個資料,切片還支援設定步長,步長預設為1,也就是說連續取資料,當你設定步長後,會按照指定的步長,如下程式碼所示

print(lst[1:4:2])

# 列印結果 ['李四','馬六']

同樣切片也支援反著取資料,比如你想獲取田七到王五區間的資料,參考程式碼如下

print(lst[-1:-3:-1])

# 列印結果 ['田七','馬六','王五']

4.3 修改資料

在Python中如果你想向一個list資料中追加一個資料可以使用append方法向末尾增加,如下程式碼所示

lst = lst.append('王八')

也可以使用pop方法彈出最末尾一個資料,如下程式碼所示

value = lst.pop()

如果你想吧資料清空,也可以使用clear方法,當然你也可以直接將值重新賦值一個空list,如下程式碼所示

lst.clear()
#或者
lst = []

4.4 值的引用

在Python中需要注意一種引用記憶體地址的特殊情況,如下程式碼所示

# 定義兩個變數
aList = ['張三', '李四', '王五']
bList = []

# 在bList中追加aList,此時bList為二維list
bList.append(aList)

#修改aList變數裡面的值
aList[0] = '張三丰'

#列印bList
print(bList)
# 列印結果 [['張三丰', '李四', '王五']]

在上面程式碼中可以看到,已經將一個變數賦給另外一個變數,按照常規理解來說,他們是相互獨立的,但實際上並不是;在Python中如果存在二維的list,一維裡面往往是記錄一個記憶體地址,並不是把值完整的複製一份,這種引用操作Python中也稱之為淺拷貝;

五、元組(tup)

在Python中有一種資料型別和list非常相似,稱之為元組(tuple);它們最明顯區別就是list定義之後可以修改結構,而元組定義之後不能再次修改,其次是在定義的時候有一點點不同,如下程式碼所示

#定義list資料
lst = ['張三', '李四', '王五']
#定義元組資料
tple ('張三', '李四', '王五')

在取資料的時候同樣支援切片,也同樣支援用索引(下標)方式來取值,唯一的區別就是不能再更改裡面的值,比如說追加資料或者裡面的某一個資料重新賦值。

六、字典 (dict )

在PHP中我們知道陣列有兩種型別,索引陣列和關聯陣列,而關聯陣列在Python中稱之為字典,定義方式和lst區別不大,如下程式碼所示

6.1 資料定義

demo = {
    'k1':'v1',
    'k2':'v2',
    'k3':'v3',
}

在Python中定義字典相對PHP來說比較嚴格,對key有要求,不像PHP中可以只輸入值而不輸入可以,在Python中必須同時輸入key和value。

6.2 增刪改查

Python中的字典增刪改查和PHP基本類似,獲取字典資料參考程式碼如下所示

#明確存在某一個key可以這樣取值,如果值不存在會報錯
d['存在的key']

#不知道是否存在的情況
d.get('不知道存不存在的key')

增加資料的方式比較常規,這裡不再特別說明,示例程式碼如下所示

#增加一項資料
data['不存在的key'] = '值'

刪除資料的方式有兩種形式,第一種是彈出指定資料,第二種是通過方法刪除,和PHP基本類似,如下程式碼所示

#彈出資料
data.pop('key')
#刪除資料
del data['key']

修改資料直接賦值即可,如下程式碼所示

# 修改資料
data['存在的key'] = 新的值

七、雜項

在Python中對資料會經常處理,這裡記錄三個常用的操作方法;

7,1 range 函式

有時需要定義一個列表,裡面包含1~100的所有數值,在PHP中可能需要通過for迴圈來實現,但在Python中有一個函式range()可以建立一個整數列表,一般用在 for 迴圈中,如下程式碼所示

#range(start, stop[, step])
 for i in range(0,5,1):
     print(i)
# 列印結果  0 1 2 3 4 5

start引數代表計數從 start 開始,stop是代表計數停止的數值,step則代表一次遞增幾個數值

7.2 布林型說明

在Python中的布林值中,數字 0為 False,其他數字都為true,字串除了''是false以外,其他非空的字串都是true,tuple型別中除(){}是false,其他都是true,還有Python中表示空的none也是false

7.3 資料操作

在Python中如果你想判斷一個列表是否包含某一個值可以使用in方式,如下程式碼所示

#定義一個列表
lst = ['tang','qing','song']
#判斷lst是否包含某一個值
result = 'tang' in lst

print(result)
#列印結果  True

如果你想知道一個list中是否不包含可以使用not in方式,如下程式碼所示

#定義一個列表
lst = ['tang','qing','song']

#判斷lst是否不包含某一個值
result2 = 'tang' not in lst

print(result2)
#列印結果  False

在Python中如果你想檢視一個列表的長度,可以使用len(lstt)方法 檢視列表的長度

lst = ['tang','qing','song']

print(len(lst))

#列印結果  3

作者:湯青松

微信:songboy8888

更新日期:2019-07-21

相關文章