不知不覺,python自學教程已經更新到第八篇了,再有幾篇,基本的語法就介紹完了, 今天來總結一下資料型別有哪些需要注意的地方,
元組注意事項
元組是另一種經常使用到的資料型別,看上去和串列差不多,它們之間的區別在于串列是一個可變的資料型別,而元組是不可變的,
#元組
a = (1, 2)
#串列
a = [1, 2]
使用串列會更靈活,而元組支持的操作更少,有的人會認為沒有必要用元組,直接用串列就可以了,
但正因為元組不可變,限制了功能,從效率上來講它會更加快一些,而且,當你不想讓用戶去修改這個資料的時候,用元組會更合適,資料相對來說更加安全,不容易出bug,
使用元組的時候一定要記得在元素的后面加逗號,當一個元組只有一個元素的時候,后面不打逗號,是不能表示成元組的,而是元素本身的型別,
a = (1) # 等于 1
a = (1,) #這才是元組
浮點數注意事項
在編程語言當中,浮點數的精度往往不能達到完全的精確,這會給我們編程帶來一些問題,甚至呢可能帶來很大的bug,比如說我們現在計算一個很簡單的小數點的運算,0.1+0.2,大家可以先回答一下這個應該等于多少呢?
print(0.1 + 0.2)
很明顯這是一個小學的數學題,但是呢,當我們交給Python去運算的話呢,我們得到結果并不是等于0.3而是等于
0.30000000000000004
這是計算機在表示十進制小數的時候會出現誤差,
從直觀的感受上看,這種精度好像造成不了太大的影響,但是,在對資料要求非常嚴格的情況下,這種誤差會引發打的問題,尤其是在做測驗的時候,如果你你的預期結果和實際結果都不相等,那么你測驗用例肯定是不會通過的,
在操作銀行、證券這類金融業務時,涉及到支付和錢的時候一定要有非常嚴格的精度控制, 此時,可以使用 decimal 模塊來保持高精度,我們把需要操作的浮點數先轉換成字串,再作為引數傳給 Decimal 類,
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2"))
# 0.3
除法注意事項
在進行除法運算的時候,一定要牢記:被除數是不能等于0的,
當你把0作為一個被除數的時候,程式是會報錯的,
print(3 / 0)
串列注意事項
面試題當中串列問題出現的概率應該有80%以上,因為串列的操作非常頻繁,而且比較容易出錯,現在我們就來看一個經典問題:洗掉串列元素,
有一個串列如下,請洗掉串列當中的每一個元素,但是不能直接用clear方法,
names = ["九柄", "八柄", "七柄","六柄","五柄"]
按照條件反射,我們一般會寫一個 for 回圈,然后依次執行remove方法或者 pop 方法來洗掉元素,但是這樣得到的結果是不對的,總有幾個元素洗掉不掉,
for name in names:
names.remove(name)
print(names)
# ["八柄", "六柄"]
為什么會刪不干凈呢?最核心的原因是:洗掉掉一個元素之后,這個串列發生了變化,
第1次,我們取到的元素是索引為0的 “九柄”, 它被刪掉了之后, 接下來去取索引為 1 的元素,因為“九柄” 已經被洗掉,所以索引為0的元素已經被替換成 "八柄", 索引為1 的元素則為”七柄“, 七柄被刪,八柄跳過去了,沒有被洗掉,
然后,取索引為 2 的資料,為 ”五柄“, ”六柄“ 又被跳過了,從而造成洗掉不干凈的情況,
從這個例子當中我們得出一個結論,不要在for回圈當中去修改串列洗掉串列或者增加元素,這樣非常容易出 bug,那上面的問題如果我們想解決怎么辦呢?在我們去操作一個串列的時候,我們最好是做一個備份,不直接去修改原來的串列,
for name in names[:]:
names.remove(name)
print(names)
可變型別和不可變型別
實際上大多數的可變型別雖然增加了靈活性,有更多的操作,但是更容易出bug,在我個人的編程程序當中,我會盡量使用不可變型別,
為了區分可變型別和不可變也行,我們舉幾個例子,
a = [1, 2, ("a", "b")]
此時,a 是串列,是可變型別,可以任意添加、修改其中的元素,比如把索引2的元素換成 c
a[2] = "c"
# [1,2,'c']
但是,不能改 ("a", "b") 當中的元素,因為它是個元組,
a[2][0] = "c" # 報錯
總結
總的來說資料型別是難度比較低的內容,只有很多方法比較難記,在開始學Python的時候,可以從資料型別入手,這樣比較容易增加信心,只要稍微努力一點,多記一些相關的方法,可以迅速上手寫代碼,
作者:九柄
作業:軟體測驗工程師
領資料或者技術交流務必備注博客園

歡迎點贊和三連,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/502895.html
標籤:Python
下一篇:變數
