日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

10个python使用技巧

發布時間:2025/3/20 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10个python使用技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 用ZIP處理列表

假設要合并相同長度的列表并打印結果。同樣有一種更通用的方式,即用zip()函數獲得想要的結果,代碼如下:

countries= ['France', 'Germany', 'Canada'] capitals = ['Paris', 'Berlin', 'Ottawa'] for country, capital in zip(countries,capitals):print(country, capital) #輸出: # France Paris # Germany Berlin # Canada Ottawa

2. 使用python collections

Python collections是容器數據類型,即列表、集合、元組、字典。Collections模塊提供了可以增強代碼的高性能數據類型,使工作更加簡潔容易。它還提供了許多功能,以下使用Counter() 函數進行演示。

Counter() 函數采用一個可迭代對象(如列表或元組),并返回一個Counter字典。字典的鍵是迭代器中唯一存在的元素,每個鍵的值是該元素在迭代器中出現次數的計數。

為創建一個Counter對象,將一個迭代的(列表)傳遞給Counter()函數,代碼如下。

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from collections import Counter count = Counter(['a','b','c','d','b','c','d','b']) print(count) # Counter({'b': 3, 'c': 2, 'd': 2, 'a': 1})

3. 使用itertools

Python的itertools模塊是用于處理迭代器的工具集合。Itertools包含多種工具,用于生成輸入數據的可迭代結果。這里以itertools.combinations()為例。itertools.combinations()用于構建組合。這些是輸入量的可能組合項。

舉一個現實中的例子來闡明以上觀點:

假設一個錦標賽中有4個隊伍,在聯賽階段,每個隊伍都要與其他每個隊伍進行比賽。任務是列出所有比賽隊伍的可能組合。

代碼如下:

import itertools friends = ['Team 1', 'Team 2', 'Team 3', 'Team 4'] list(itertools.combinations(friends, r=2)) # [('Team 1', 'Team 2'), ('Team 1', 'Team 3'), ('Team 1', 'Team 4'), ('Team 2', 'Team 3'), ('Team 2', 'Team 4'), ('Team 3', 'Team 4')]

需要注意的是,值的順序不重要。因為(‘Team 1’, ‘Team 2’)和(‘Team 2’, ‘Team 1’)代表同一對,所以輸出列表只需包含其中一個。相似的,可以使用itertools.permutations()以及來自該模塊的其他函數。

4 使用列表推導式

列表推導式用于從其他可迭代對象中創建新列表。列表推導式返回列表時,由包含表達式的方括號組成,該表達式對于每個元素以及用于循環遍歷每個元素的for循環執行。由于對python解釋器進行了優化,可以在循環期間發現可預測的模式,因此列表推導速度更快。

如下,使用列表推導式計算前五個整數的平方:

m = [x** 2 for x in range(5)] print(m) # [0, 1, 4, 9, 16]

再如,使用列表推導式查找兩個列表中的公共數字:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' list_a =[1, 2, 3, 4] list_b = [2, 3, 4, 5] common_num = [a for a in list_a for b in list_b if a == b] print(common_num) # [2, 3, 4]

5. 將兩個列表轉換為一個字典

假設有兩個列表,一個列表內容為學生姓名,另一個內容為學生分數。使用zip函數,將這兩個列表轉換為一個字典,代碼如下:

students= ["Peter", "Julia", "Alex"] marks = [84, 65, 77] dictionary = dict(zip(students, marks)) print(dictionary) # {'Peter': 84, 'Julia': 65, 'Alex': 77}

6. 字符串拼接
拼接字符串時可用for循環來逐個添加元素,但這非常低效(特別是當列表很長時)。在python中,字符串是不可變的,因此拼接字符串時,必須將左、右字符串復制到新的字符串中。

更好的方法是使用join() 函數,如下所示:

haracters= ['p', 'y', 't', 'h', 'o', 'n'] word = "".join(characters) print(word) # python

7. 使用sorted()函數
在python中使用內置函數sorted()可以輕而易舉地對任何序列進行排序,它能完成很多艱難的工作。sorted()可對任何序列(列表、元組)進行排序,并返回已排序的元素列表。如下對數字進行升序排列:

sorted([3,5,2,1,4])# [1, 2, 3, 4, 5]

如下對字符串進行降序排列:

sorted(['france','germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany','france', 'china', 'canada']

9. 用enumerate()迭代

Enumerate()方法向可迭代對象添加一個計數器,并以枚舉對象的形式返回。

以下是一個經典的編碼方面的面試問題(通常被稱為Fizz Buzz問題)。

編寫一個程序來打印列表中的數字。若數字是3的倍數,輸出“fizz”;是5的倍數,輸出“buzz”;既是3又是5的倍數,輸出“fizzbuzz”

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' numbers= [30, 42, 28, 50, 15] for i, num in enumerate(numbers):if num % 3 == 0 and num % 5 == 0:numbers[i] = 'fizzbuzz'elif num % 3 == 0:numbers[i] = 'fizz'elif num % 5 == 0:numbers[i] = 'buzz' print(numbers) # ['fizzbuzz', 'fizz', 28, 'buzz', 'fizzbuzz']

10. 使用python generators(生成器)

generator函數允許創建類似迭代器的函數。他們允許程序員以一種簡單快速的方式創建迭代器。下面通過一個例子來解釋這個概念。

假設要對從1開始的前100000000個完全平方數求和。

看起來很容易對吧。使用列表推導式可以很輕松的做到這一點,但是它的輸入量過大。下面為一示例:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import time t1 =time.clock() sum([i * i for i in range(1, 100000000)]) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # Ittook 13.197494000000006 Secs to execute this method

在增加求和的完全平方數時,由于需要大量計算時間,這種方法并不夠靈活。這時python生成器就派上用場了。將方括號替換為圓括號后,列表推導式更改為生成器表達式。現在計算花費的時間:

import time t1 = time.clock() sum((i * i for i in range(1, 100000000))) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # Ittook 9.53867000000001 Secs to execute this method

如上,所花費時間已大大減少。輸入量越大,減少效果越顯著。

總結

以上是生活随笔為你收集整理的10个python使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。