一些實驗中用過的python函數/方法(持續更新)

来源:https://www.cnblogs.com/qftie/archive/2022/05/21/16294106.html
-Advertisement-
Play Games

衡量運行時間 很多時候你需要計算某段代碼執行所需的時間,可以使用 time 模塊來實現這個功能。 import time startTime = time.time() # write your code or functions calls endTime = time.time() totalT ...


衡量運行時間

很多時候你需要計算某段代碼執行所需的時間,可以使用 time 模塊來實現這個功能。

import time

startTime = time.time()

# write your code or functions calls

endTime = time.time()
totalTime = endTime - startTime

print("Total time required to execute code is =", totalTime)

# output
Total time required to execute code is = 4.76837158203125e-07

獲取兩個列表之間的差異

不使用迴圈,找出兩個列表的差異,可以使用集合的 symmetric_difference 方法。

list1 = ['Scott', 'Eric', 'Kelly', 'Emma', 'Smith']
list2 = ['Scott', 'Eric', 'Kelly']

set1 = set(list1)
set2 = set(list2)

list3 = list(set1.symmetric_difference(set2))
print(list3)

# output
['Emma', 'Smith']

翻轉字元串和列表

a = "zhihu"
print("Reverse is", a[::-1])
List = ["Shriya", "Lavina", "Sampreeti" ]
List.reverse()
print(List)

# output
Reverse is uhihz
['Sampreeti', 'Lavina', 'Shriya']

連接列表中的多個字元串

需要調用字元串的 join 方法,還可以設置間隔符,下麵為間隔符為空格的例子。

a = ["Python", "Is", "Great"] 
print(" ".join(a))

# output
Python Is Great

同時使用多個比較運算符

在 C 中不能連續進行大小比較,在 Python 中就可以。

n = 10
result = 1 < n < 20
print(result) 
result = 1 < n <= 9
print(result)

# output
True
False

列印導入模塊的文件路徑

import os 
import socket 

print(os) 
print(socket)

# output
<module 'os' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\os.py'>
<module 'socket' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\socket.py'>

二維列表轉一維列表

只需使用 Itertools 一行代碼,即可將嵌套列表轉換為一個列表。

import itertools  
a = [[1, 2], [3, 4], [5, 6]] 
print(list(itertools.chain.from_iterable(a))) 

# output
[1, 2, 3, 4, 5, 6]

Lambda 匿名函數用法

要聲明一些小功能,但不使用常規的聲明方式,可以用使用 lambda。 python 中的 lambda 關鍵字為聲明匿名函數提供了快捷方式。

subtract = lambda x, y : x-y
subtract(5, 4)
# 可結合map reduce使用

列表中每個元素出現次數

Counter(list).most_common(n) 根據列表 / 字元串中每個元素出現次數,降序返回列表 / 字元串中的前 n 個元素,其中 n 是指定的數字。在元組中返回各個元素及其出現的次數。

# Code to find top 3 elements and their counts 
# using most_common 
from collections import Counter 
  
arr = [1, 3, 4, 1, 2, 1, 1, 3, 4, 3, 5, 1, 2, 5, 3, 4, 5] 
counter = Counter(arr) 
top_three = counter.most_common(3) 
print(top_three) 

# output
[(1, 5), (3, 4), (4, 3)]

輸出結果為個數最多的 3 個數字,其中 1 出現 5 次,3 出現 4 次,4 出現 3 次。

找到列表中最常出現的值

test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4] 
print(max(set(test), key = test.count))
# max(test, key = test.count) 也可以實現同樣功能,但列表數據量大時會變慢
# s.count(x) x在s中出現的總次數
# output
4

檢查對象的記憶體使用情況

當你要使用任何數據結構(例如列表,字典或任何對象)來存儲值或記錄時,可以檢查數據結構使用了多少記憶體。

使用 sys 模塊中定義的 sys.getsizeof 函數獲取內置對象使用的記憶體,返回對象的大小(以位元組為單位)。

import sys 
x = 1
print(sys.getsizeof(x)) 

# output
28

註意:sys.getsizeof 不會為第三方對象或用戶定義的對象返回正確的值。

字元串乘法拼接

n = 3
a = "Python"
print(a * n)

# output
PythonPythonPython

將多個列表同一位置元素zip在一起

當你需要連接許多迭代器對象(如列表)以獲取單個列表時,可以使用 zip 函數,結果顯示每個新列表每個元素,是所有迭代器對象同一位置值的元組。

Year = (1999, 2003, 2011, 2017)
Month = ("Mar", "Jun", "Jan", "Dec")
Day = (11,21,13,5)
print(zip(Year, Month, Day))

# output
[(1999, 'Mar', 11), (2003, 'Jun', 21), (2011, 'Jan', 13), (2017, 'Dec', 5)]

.get獲取字典中key對應的值,不存在則返回指定值

通過 [] 方式獲取字典中的值時,如果鍵不存在則會報錯,可以使用字典的 get 函數,指定鍵不存在時,可以返回的值。

比如字典中有鍵 ‘c’,則返回對應的值,否則返回 3。

d = {'a':1, 'b':2}
print(d.get('c', 3))

# output
3

for...else...

Python 中的 for 迴圈可以使用 else 關鍵字,如果在 for 迴圈中遇到 break 跳出迴圈,則不執行 else 子句,否則執行。

for i in range(5):
    pass
else:
    pass

{**d1, **d2}合併字典

d1 = {'a': 1}
d2 = {'b': 2}
print({**d1, **d2})

# output
{'a': 1, 'b': 2}

求列表中前 n 個最大 / 最小的數字

使用 heapq 返回任何列表中的前 n 個最小 / 最大元素,這裡 n 是指定的數字。

# Python code to find 3 largest and 4 smallest
# elements of a list.
import heapq
  
grades = [110, 25, 38, 49, 20, 95, 33, 87, 80, 90]
print(heapq.nlargest(3, grades))
print(heapq.nsmallest(4, grades))

# output
[110, 95, 90]
[20, 25, 33, 38]

輸出的第一行給出列表等級中存在的最大數字中的 3 個。 同樣,輸出的第二行將列印出列表等級中存在的最小元素中的 4 個,此功能的另一個特點是它不會忽略重覆值。

x, y = y, x 就地交換兩個數字

x, y = 10, 20
print(x, y) 
x, y = y, x 
print(x, y) 

# output
10 20
20 10

set(listNumbers)從列表中刪除重覆項

listNumbers = [20, 22, 24, 26, 28, 28, 20, 30, 24]
print("Original= ", listNumbers)

listNumbers = list(set(listNumbers))
print("After removing duplicate= ", listNumbers)

# output
Original=  [20, 22, 24, 26, 28, 28, 20, 30, 24]
After removing duplicate=  [20, 22, 24, 26, 28, 30]

比較兩個無序列表

假設你有兩個包含相同元素的列表,但是兩個列表中的元素順序都不同。可以使用 collections.Counter()方法進行判斷,確定它們是否元素值都相同。

from collections import Counter

one = [33, 22, 11, 44, 55]
two = [22, 11, 44, 55, 33]

print("two lists are equal.", Counter(one) == Counter(two))

# output
two lists are equal.

檢查列表中的所有元素是否唯一

def isUnique(item):
    tempSet = set()
    return not any(i in tempSet or tempSet.add(i) for i in item)

listOne = [123, 345, 456, 23, 567]
print("All List elemtnts are Unique ", isUnique(listOne))

listTwo = [123, 345, 567, 23, 567]
print("All List elemtnts are Unique ", isUnique(listTwo))

# output
All List elemtnts are Unique  True
All List elemtnts are Unique  False

位元組轉換為字元串

要將位元組轉換為字元串,可以對 bytes 對象進行解碼以生成字元串。

byteVar = b"pynative"
str = str(byteVar.decode("utf-8"))
print("Byte to string is" , str )

# output
Byte to string is pynative

dict(zip(ItemId, names))將兩個列表轉換成字典

例如你有兩個列表,一個列表包含鍵,第二個列表包含對應的值,想將這兩個列表轉換為一個字典。可以使用 zip 函數來進行實現。

ItemId = [54, 65, 76]
names = ["Hard Disk", "Laptop", "RAM"]

itemDictionary = dict(zip(ItemId, names))

print(itemDictionary)

# output
{54: 'Hard Disk', 65: 'Laptop', 76: 'RAM'}

設置小數位格式

你要顯示帶有 2 個小數位的任何浮點數。 例如 73.4(73.40)和 288.5400(88.54)。

number= 88.2345
print('{0:.2f}'.format(number))

s.ljust(10, '-') 字元串左對齊填充到10

左對齊函數 ljust 和右對齊函數 rjust,都需要指定字元串長度,以及想要填充的字元,不指定則預設填充空格。

s = "12345"
print(s.ljust(10, '-'))
print(s.rjust(10, '0'))

# output
12345-----
0000012345

https://www.zhihu.com/people/zhao-xiao-de-93/posts


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • in操作符作用: 遍歷類型 基本用法 type roles = "tester" | "developer" | "manager"; const staffCount: { [k in roles]: number } = { tester: 100, developer: 200, manage ...
  • 索引:對象或數組的對應位置的名字 數組的索引就是 number 類型的 0,1,2,3... 對象的索引就是 string 類型的屬性名 數字索引簽名:通過定義介面用來約束數組 type numberIndex{ [index:number]:string } const testArray:num ...
  • DRY原則 DRY 原則,它的英文描述為:Don’t Repeat Yourself。中文直譯為:不要重覆自己。也可以理解為:不要寫重覆的代碼。 我們從實現邏輯重覆、功能語義重覆和代碼執行重覆,這三種代碼重覆來說明DRY原則。 實現邏輯重覆 例如有兩個函數isValidUserName() 和 is ...
  • 從演化歷史看大型網站架構 楊傳偉 (石家莊鐵道大學信息科學與技術學院,河北省,石家莊市,050043) 摘 要:本文以大型網站系統的特點、大型網站架構演化發展歷程以及大數據與高併發為切入和論述點,由淺入深、由簡到繁地對大型網站架構設計展開敘述,首先通述其特點,之後介紹大型網站架構的歷史發展歷程,從其 ...
  • 一些必須提前知道的概念 patition kafka日誌文件是以patition在物理存儲上分割的 是topic物理上的分組,一個topic可以分為多個partition,每個partition是一個有序的隊列 是以文件夾的形式存儲在具體Broker本機上 LEO 表示每個partition的log ...
  • MVC架構設計淺析 楊傳偉 (石家莊鐵道大學信息科學與技術學院,河北省,石家莊市,050043) 摘 要:本文以圖書管理系統為案例(當前主流框架SpringMVC的原理來分析MVC的設計理念等),深入淺出地分析常用的WEB設計模式MVC。將從MVC的歷史、MVC每一層的作用,MVC能為我們帶來什麼好 ...
  • 單例模式 單例模式一般用於全局只需要一個唯一的實例的情況。 例如說,日誌讀寫的功能,一般來說全局只需一個日誌讀寫實例,然後其他的類實例去獲取這個實例進行日誌讀寫。 又例如說,有一個協作的功能,需要各個模塊發送給主控制器,主控制器需要做成單例,這樣子模塊之間操作控制器就是操作實際主控制器的內容。 怎麼 ...
  • 操作系統:Windows10 Python版本:3.9.2 vosk是一個離線開源語音識別工具,它可以識別16種語言,包括中文。 這裡記錄下使用vosk進行中文識別的過程,以便後續查閱。 vosk地址:https://alphacephei.com/vosk/ 使用vosk-server進行語音識別 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...