Python常用技巧了解一下?
前言
Python 是一門非常優美的語言,并且功能也非常強大。本文搜集并總結了一些 Python 常用的技巧,一方面自己鞏固知識點,另一方面也可以給正在 Python 這條道路的同胞們一些指導。
話不多說,直接進入主題。
正文
交換變量值
快速交換兩個變量的值,操作非常簡單,示例如下:
a = 1 b = 2 print('before : a =',a,'b=',b) a,b = b,a print('after : a =',a,'b=',b)輸出:
before : a = 1 b= 2 after : a = 2 b= 1合并列表中的所有元素
將一個列表中的所有元素合并起來,示例如下:
a = ["Python","is","good"] print(' '.join(a))輸出:
Python is good這里使用空格來隔開每一個元素。
查找列表中出現頻率最高的元素
在一個列表中,統計出重復最多的元素,并計算其重復次數,示例如下:
a = [1,2,3,3,4,5,6,1,2,7,2,9,1,2]print(max(set(a),key = a.count))from collections import Countercnt = Counter(a) print(cnt.most_common())輸出:
2 [(2, 4), (1, 3), (3, 2), (4, 1), (5, 1), (6, 1), (7, 1), (9, 1)]第一個打印,輸出的是列表中出現的頻率最高的元素
第二個打印,輸出的是列表中每個元素出現的頻率,用元組的形式表示。
其中第一個輸出
也可以寫成:
print(max(set(a),key = lambda x:a.count(x)))這樣其實更便于理解。
關于 max 的用法可以參考這里。
關于 set 的用法可以參考這里
而第二個輸出:
print(cnt.most_common())這里的most_common可以指定參數,假如說傳入cnt.most_common(2),那么將返回排前2個的集合,如果不指定參數,默認輸出所有。
關于Counter的用法可以參考這里。
返回列表中最小值和最大值的索引
a = [21,34,56,32,2,45]def find_max_value_index(a):return max(range(len(a)),key = a.__getitem__)def find_min_value_index(a):return min(range(len(a)),key = lambda x: a[x])print(find_max_value_index(a)) print(find_min_value_index(a))注意,這里定義了兩個函數,分別計算最大值和最小值的索引值。兩種寫法有些不同,一個是使用了關鍵字lambda,我個人更傾向于添加lambda關鍵字的這種,利于理解。
為了更容易理解上面的這種寫法, 這里把語句拆解開并打印出來,這樣就一目了然了;
輸出:
6 range(0, 6) 21檢查兩個字符串是不是由相同字母不同順序組合
from collections import Countera = 'awawa211eqsass' b = 'wadqw1'c = 'abcde' d = 'cdabe' print(Counter(a) == Counter(b)) print(Counter(c) == Counter(d))輸出:
False True反轉字符串
a = 'awawa211eqsass' f = a[::-1] print(f) #ssasqe112awawa也可以使用循環,不過是分行輸出
for x in reversed(a):print(x)如果是要翻轉一個很長的數字
aa = 12345678 print(int(str(aa)[::-1])) #87654321反轉列表
類似上面的反轉字符串
bb = [1,2,3,4,5] print(bb[::-1]) #[5,4,3,2,1]同樣可以通過循環的方式來
for x in reversed(bb):print(x)移除列表中的重復元素
>>> a = [1,2,3,4,5,3,2,1,7] >>> print(list(set(a))) [1, 2, 3, 4, 5, 7]還可以導入庫中的模塊來實現
>>> b = ['aaw','bbb','ccc','aaw'] >>> print(list(set(b))) ['aaw', 'ccc', 'bbb'] >>> from collections import OrderedDict >>> print(list(OrderedDict.fromkeys(b).keys())) ['aaw', 'bbb', 'ccc']合并字典
a = {'a':1} b = {'b':2} #方法一 print({**a,**b}) #方法二 print(dict(a.items() | b.items())) #方法三 a.update(b) print(a)輸出結果:
{'a': 1, 'b': 2} {'b': 2, 'a': 1} {'a': 1, 'b': 2}for else 用法
for x in range(1,5):if x == 0:break else:print("did not break out of for loop")輸出:
did not break out of for loop
這個用法的意思就是,當循環結束后但是 for 中的內容還沒有執行,就會執行 else 中的內容。
轉換列表為逗號分隔符形式
#純字符串列表 a = ['aaa','bbb','ccc'] print(','.join(a)) #純數字列表 b = [1,2,3,4] print(','.join(map(str,b))) #字符串加數字列表 c = [1,2,'aaa',4] print(','.join(map(str,c)))輸出:
aaa,bbb,ccc 1,2,3,4 1,2,aaa,4字典 get 的方法
a = {'aaa':10,'bbb':20,'ccc':30} print(a.get("ddd",23))可以傳入默認值,如果查詢不到 key 的話,就會返回默認值。
通過「鍵」排序字典元素
a = {'bbb':50,'aaa':20,'ccc':30} print(sorted(a.items(),key=lambda x:x[1])) #------測試-------# print(a.items()) print(('bbb', 50)[1])輸出:
[('aaa', 20), ('ccc', 30), ('bbb', 50)] dict_items([('bbb', 50), ('aaa', 20), ('ccc', 30)]) 50為了便于理解,這里輸出了 items()的值。
a = {'bbb':50,'aaa':20,'ccc':30} #方法一 print(sorted(a.items(),key=lambda x:x[1]))#方法二 from operator import itemgetter print(sorted(a.items(),key = itemgetter(1)))print(sorted(a,key=a.get))輸出:
[('aaa', 20), ('ccc', 30), ('bbb', 50)] [('aaa', 20), ('ccc', 30), ('bbb', 50)] ['aaa', 'ccc', 'bbb']其中最后一句輸出的是排序后的 key 列表。
轉置二維數組
org = [['a','b'],['c','d'],['e','f']] tran = zip(*org) print(list(tran))輸出:
[('a', 'c', 'e'), ('b', 'd', 'f')]鏈式函數調用
這是一種比較新穎的寫法,可以大大的縮短精簡代碼:
def add(a,b):return a+b def sub(a,b):return a-bb = True print((add if b else sub)(3,2))輸出為:5
鏈式比較
a = 5 print(1< a < 8) print(1 == a < 20)輸出為:
True False列表拷貝的幾種方式
直接看示例吧
#僅賦值 a = [1,2,3,4] b = a b[0] = 5 print(a,b)#深拷貝 a = [1,2,3,4] b = a[:] b[0] =10 print(a,b)#相當于重新創建一個list空間 a = [1,2,3,4] b = list(a) b[0] = 6 print(a,b)#使用 list的copy函數,只有 Python3支持 a = [1,2,3,4] b = a.copy() b[0] = 8 print(a,b)#導入包來實現深拷貝 from copy import deepcopy b = [[1,2],[3,4]] c = deepcopy(b) c[0][0] = 5 print(b,c)輸出結果:
[5, 2, 3, 4] [5, 2, 3, 4] [1, 2, 3, 4] [10, 2, 3, 4] [1, 2, 3, 4] [6, 2, 3, 4] [1, 2, 3, 4] [8, 2, 3, 4] [[1, 2], [3, 4]] [[5, 2], [3, 4]]可以看到, 第一種方式僅僅是將 list 賦值給另一個對象,并非開辟新的空間,其他幾種方式都屬于深拷貝。
參考文檔:
https://www.toutiao.com/a6591753290361340429/?tt_from=android_share&utm_campaign=client_share×tamp=1535293192&app=news_article&iid=41720269988&utm_medium=toutiao_android&group_id=6591753290361340429
總結
以上是生活随笔為你收集整理的Python常用技巧了解一下?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python标准库collections
- 下一篇: Mac下PyCharm CE 配置PyQ