1. 程式人生 > >Python小知識 | 這些技能你不會?(一)

Python小知識 | 這些技能你不會?(一)

Python小知識

最近在看《零壓力學Python》,鞏固一下基礎知識,意外收穫到很多常用卻不一定被注意的小知識,分享給大家,學到東西了點贊支援哦~

                                                         個人微信公眾號,歡迎關注領取學習資源

 

一、賦值執行

(1) 多賦值

# 多賦值
a = b = c = 0
print("a的值為:"+str(a))
print("b的值為:"+str(b))
print("c的值為:"+str(c))

'''
result:
a的值為:0
b的值為:0
c的值為:0
'''

(2)元組賦值

# 元組賦值
a,b,c = 1,2,3
print("a的值為:"+str(a))
print("b的值為:"+str(b))
print("c的值為:"+str(c))

'''
result:
a的值為:1
b的值為:2
c的值為:3
'''

(3)同步賦值

# 同步賦值
a,b = 1,2
# a=a+b,b=a同時執行,運算時都利用原始值(舊值)
a,b = a+b,a 
'''
a = a + b = 1 + 2 = 3
b = a = 1(原始值)
'''
print("a的值為:"+str(a))
print("b的值為:"+str(b))

'''
result:
a的值為:3
b的值為:1
'''

(4)自操作簡化

# 自操作簡化
a+=1  # 自加一
a-=1 # 自減一
a*=2 # 自乘2
a/=2 # 自除2
a**=2 # 自己的2次方

二、列表索引與切片

(1)列表索引

  • 正索引
list_test = [1,2,3,4,5]
# 正索引 
'''
列表長度:len
list_test[n]
表示取列表的第n+1個元素
n < len
'''
print("第三個元素是:"+str(list_test[2]))

'''
result : 
第三個元素是:3
'''
  • 負索引
# 負索引 
'''
列表長度:len
(n<0)
list_test[n]
表示取列表的倒數第|n|元素
|n| < len
'''
print("倒數第二個元素是:"+str(list_test[-2]))

'''
result : 
倒數第二個元素是:4
'''

(2)列表切片
切片可以訪問(取出)原列表的任意子列表,生成一個新列表。

'''
格式:[begin : end : step]
begin : 切片開始位置,從第begin+1開始,預設為0
end : 到第end個結束,預設為列表長度
step : 取數的間距
'''
list_test = [1,2,3,4,5]
# 取出子列表[2,3]
print("無間距取子列表:"+str(list_test[1:3]))
# 每隔一個元素取,這裡是取出奇數
print("有間距取子列表:"+str(list_test[0:5:2]))
# 取出最後2個元素
print("取出最後2個元素:"+str(list_test[-2:]))

'''
result:
無間距取子列表:[2, 3]
有間距取子列表:[1, 3, 5]
取出最後2個元素:[4, 5]
'''

(3)很秀的操作

  • 列表元素順序反向
# 列表元素順序反向
print("列表元素順序反向:"+str(list_test[-1::-1]))

'''
result :
列表元素順序反向:[5, 4, 3, 2, 1]
'''
  • 替換列表某段子列表
# 替換列表某子列表
list_test[0:2] = [9,8]
print("替換列表前兩個元素:"+str(list_test))

'''
result :
替換列表前兩個元素:[9, 8, 3, 4, 5]
'''
  • 在列表開頭插入兩個元素
# 在列表開頭插入兩個元素
list_test[:0] = [7,6]
print("在列表開頭插入兩個元素:"+str(list_test))

'''
result :
替換列表前兩個元素:[7, 6, 1, 2, 3, 4, 5]
'''

三、字串處理

(1)split拆分字串

# split拆分字串
str_test = "I am 極簡XksA who are you ?"
str_test01 = "老表#X先生#XksA"

# 預設以空格為分隔符,拆分字串
r_list = str_test.split()
print("預設空格拆分結果:"+str(r_list))
# 用指“#”拆分字串str_test01
r_list01 = str_test01.split("#")
print("用指定字元拆分結果:"+str(r_list01))

'''
result :
預設空格拆分結果:['I', 'am', '極簡XksA', 'who', 'are', 'you', '?']
用指定字元拆分結果:['老表', 'X先生', 'XksA']
'''

(2)strip刪除字串前後多餘字元

str_test02 = "   我愛你  啊!  \t   \n"
# 預設情況下會去除字串首尾的空格、”\t“、”\n“
strip_test = str_test02.strip()
print(strip_test)

'''
result :
我愛你  啊!
'''

# strip去除字串前後指定字串
str_test02 = "   我愛你  啊!  才怪"
strip_test = str_test02.strip("才怪")
print(strip_test)

'''
result :
   我愛你  啊! 
''' 

細心的讀者會發現,我們指定刪除”才怪“後,前後的空格沒有被刪除。

也就是說我們只能指定一種模式,那要刪除”才怪“,還想把空格也去除怎麼辦呢?

也很簡單,把模式改成”才怪 “,也就是說,在指定格式里加個空格就行,那麼,”怪才 “、” 怪才“、”怪 才“都是一個模式,會把字串前後的”才“、”怪“、” “這三個字元都去掉,直到遇到不是這三個字元的字元為止。

這個小技巧很實用哦~

(3)join連線列表字串

# join連線列表
list_test = ['2018','10','29']
r_join = "-".join(list_test)
print(r_join)

'''
result :
2018-10-29
'''

如果我們要給幾個字串用指定字元或字串連線起來,用join方法的好處就是,不會在字串末尾新增分隔符,比如上面程式碼的例子,如果我們直接遍歷加-,那可能就會產生2018-10-29-這樣的結果,需要對字串再處理,才能得到我們想要的結果,而join可以直接生成,程式碼簡潔,效率高,這一點可以說超級優秀了。
(4)基本操作

  • 大小寫轉換
str_00 = "I Love You."
str_00 = str_00.upper()
print("小寫轉大寫:"+str_00)
str_00 = str_00.lower()
print("大寫轉小寫:"+str_00)

'''
result :
小寫轉大寫:I LOVE YOU.
大寫轉小寫:i love you.
'''
  • 字元與ASCII碼轉換
# ASCII碼轉化成字元
print("ASCII碼65表示:"+chr(65))
print("B的ASCII碼為:"+str(ord("B")))

'''
result :
ASCII碼65表示:A
B的ASCII碼為:66
'''
  • 英文字母判斷
str_00 = "D三23安生"
# 字串的英文字母是否全部為小寫字母(可以包含其他字元)
print(str_00.islower())

# 字串的英文字母是否全部為大寫字母(可以包含其他字元)
print(str_00.isupper())

# 判斷字串首寫字元是否為英文大寫字母
print(str_00.istitle())
  • 數字字元判斷
# 字串為十進位制、雙位元組整數(可組合)
print(str_00.isdecimal())

# 字串為十進位制、單位元組、雙位元組整數(可組合)
print(str_00.isdigit())

# 字串為十進位制、單位元組、雙位元組整數、漢字數字(可組合)
print(str_00.isnumeric())
  • 組合字元判斷
print(str_00.isalpha())

# 字串是否為數字和字母和漢字組合(可以只包含某一類或兩類)
print(str_00.isalnum())
  • 其他判斷
# 判斷字串是不是有效的識別符號(可以用來判斷變數名是否合法)
print(str_00.isidentifier())

# 判斷字串是否全部為空格
print(str_00.isspace())

靈活應用這些基本操作,讓你的工作學習事半功倍。