主頁 > 後端開發 > 花了兩天從幾十萬行代碼里總結出的22個Python萬用公式,非常有用

花了兩天從幾十萬行代碼里總結出的22個Python萬用公式,非常有用

2022-12-14 06:49:02 後端開發

哈嘍兄弟們

在大家的日常python程式的撰寫程序中,都會有自己解決某個問題的解決辦法,或者是在程式的除錯程序中,用來幫助除錯的程式公式,

小編通過幾十萬行代碼的總結處理,總結出了22個python萬用公式,可以幫助大家解決在日常的python編程中遇到的大多數問題,一起來看看吧,

1、一次性進行多個數值的輸入

對于數值的輸入問題,是很多筆試題目中經常遇到的問題,一次性輸入多個引數值 ,可以節省時間和代碼量,為后面的程式撰寫節省時間,

# 確定數值的輸入時

num1,num2 = map(int,input().split())
print("num1:",num1)
print("num2:",num2)

# 不確定數值的輸入時

list1 = list(map(int,input().split()))
print("list1:",list1)

 

運行結果

2、同時獲取索引和數值

在進行數值的迭代時,可以利用enumerate的內置函式來獲取可迭代物件數值的同時,得到數值的索引,并利用索引對數值進行操作,

list2 = [1,2,3,4,5,6]
for k, v in enumerate(list2):
    if k % 2 == 0:
        print("v**2:",v**2)
    else:
        print("v:",v) 

 

運行結果

3、物件記憶體占用量

通過下圖的程式,可以進行物件的記憶體占用量查詢,

from sys import getsizeof
num = 1
print(getsizeof(num))

 

運行結果

4、物件記憶體地址的查詢

通過內置函式id(),可以進行不同變數的記憶體地址的查詢

num1 = 20
str1 = "hello world"
print(id(num1))
print(id(str1))

 

運行結果

5、檢查串列、字串是否有相同的元素

不同的字串,可以有相同的字母組成,同樣,串列也可以有相同的元素組成,通過下述的程式,可以判斷不同字串或者是串列是否有相同的元素,

def CheckStr(gen1,gen2):
    return sorted(gen1) == sorted(gen2)

print(CheckStr("python","python"))
print(CheckStr([1,2,3],[3,2,1]))

 

運行結果

6、合并字典

當處理json資料或者是資料庫中的內容時,會用到字典的合并,有時候還會遇到具有相同鍵值的字典,可以通過下圖程式中的兩種方法進行解決,

dict1 = {"name":['Jame','Alice'],"num":["212019","312016"]}
dict2 = {"sex":["M","F"]}

# 方法1

finaldict = {**dict1,**dict2}
print(finaldict)

# 方法2

finaldict = dict1.copy()
finaldict.update(dict2)
print(finaldict)

 

運行結果

7、檢查檔案是否存在

在程式運行中,會遇到保存一些圖片、文字的情況,這個時候就需要利用程式來判斷某個檔案或者檔案夾是否存在,

import os

def CheckFile():
    print("檔案夾存在:",os.path.exists("data"))
    if not os.path.exists("data"):
        os.mkdir("data")
CheckFile()

 

運行結果

8、對串列元素進行操作

通過Python語言的行內for回圈的方式,實作對于串列中的所有元素的操作,

list8 = range(1,8)
list_squares = [i**2 for i in list8]
print(list_squares)

 

運行結果

9、將兩個串列轉換為字典

將兩個串列轉換為字典,常見的情況是一個串列作為鍵,另一個串列作為值來構造字典,

list1 = ['James','Alice','Hoton']
list2 = [88,86,91]

# 方法1 利用zip內置函式
dict1 = dict(zip(list1,list2))

# 方法2 去除dict的隱式轉換
dict2 = {key:value for key,value in zip(list1,list2)}

# 方法3 利用for回圈
dict3 = {}
for k, v in zip(list1,list2):
    if k not in dict3.keys():
        dict3[k] = v

print("dict1:",dict1)
print("dict2:",dict2)
print("dict3:",dict3)

 

運行結果

10、字串串列的排序

當大家需要對一個字串串列進行排序時,可以利用下圖中的程式進行排序,

list1 = ['James','Alice','Hoton','Cris']
print(sorted(list1,key=lambda x:x.lower()[0]))  # 按照字串的第一個字母排序
print(sorted(list1,key=lambda x:x.lower()[-1])) # 按照字串的最后一個字母排序

 

運行結果

11、利用if和else對串列進行處理

利用if和else的操作,可以基于某些條件過濾資料,如下圖所示,

list11 = list(range(1,20))
print("偶數平方:",[i**2 if i % 2 == 0 else i for i in list11])

 

運行結果

12、合并兩個串列

對于兩個串列的合并,可以通過花式的串列合并來將兩個串列組合成一個新的串列,

list1 = ["1","2","3","4"]
list2 = ["one","two","three","four"]

new_list = [x + y for x,y in zip(list1,list2)]
print("逐元素相加:",new_list)

 

運行結果

13、對字典串列進行排序

當有字典組成的串列時,可以按照字典的鍵值對串列進行排序,

dict1 = [
    {"name":"James",
     "num":25},
    {"name":"Alice",
     "num":39},
    {"name":"Hoton",
     "num":35}
]

# 方法1 利用字典的sort函式
dict1.sort(key=lambda item:item["num"])
print(dict1)

# 方法2 利用sorted函式
dict1 = sorted(dict1,key=lambda item:item["num"])
print(dict1)

 

運行結果

14、計算程式執行的時間

對于程式計算時間 的計算,可以幫助大家對于程式或者演算法的性能有更好的了解,

from time import sleep
def funcl():
    for i in range(10000000):
        a = i
    sleep(2)

# 方法1
from datetime import datetime
start = datetime.now()
funcl()
print("程式執行所用的時間為:",datetime.now()-start)

# 方法2
import time

start_time = time.time()
funcl()
print("程式執行所用的時間為:",time.time()-start_time)

 

運行結果

15、檢查是否包含子字串

對于子字串的檢查是Python日常應用中經常遇到的一個問題,當一個字串中包含某些關鍵子字串時,將這些字串進行列印,

str_list = ["輕松學python","hello world","輕松玩python","嗨學編程"]
keywords = 'python'

for strs in str_list:
    if keywords in strs:
        print(strs)

 

運行結果

16、格式化字串

對于Python的輸入,邏輯和輸出,這三個部分在撰寫代碼時都需要某種格式,Python提供了多種格式化字串的方法,以便獲得更好和易于閱讀的輸出,

name = "愛坤"
num = 100

# 方法1 字串相加
print("我的名字是"+name+",我的成績是"+str(num)+"")

# 方法2 Python3 中的F-strings
print(f"我的名字是{name},我的成績是{num},")

# 方法3 join函式
print(''.join(["我的名字是",name,",我的成績是",str(num),""]))

# 方法4 操作字符處理
print("我的名字是%s,我的成績是%d," % (name,num))


# 方法5 format(python2.7以上的版本)
print("我的名字是{},我的成績是{},".format(name,num))

 

運行結果

17、錯誤捕捉

在Python語言中,提供了使用try,except和finally塊處理例外報錯的方法

# 錯誤1 扣除為0
try:
    num1 = 10
    num2 = 0
    print(num1 / num2)
except ZeroDivisionError :
    print("除數不能為0")

print("=================")

# 錯誤2 找不到檔案
try:
    with open("data.txt",'r') as fr:
        print(fr.readlines())   
except IOError:
    print("該檔案不存在")
finally:
    print("程式執行結束")

 

運行結果

18、串列元素頻率統計

對于串列等可迭代物件中的元素進行頻次的統計,也是一項非常常見的問題,

list1 = [1,2,3,4,5,6,7,8,3,3,4,5,2,3,2]

# 方法1 利用for回圈統計
frequ_dict = {}
for i in list1:
    if i in frequ_dict.keys():
        frequ_dict[i] += 1
    else:
        frequ_dict[i] = 1
print(frequ_dict)


# 方法2 李彤Counter類
from collections import Counter
Counter = Counter(list1)
print(Counter.most_common())

 

運行結果

19、簡易計算器制作

下圖的程式中,不需要if-else的操作,即可制作一個簡易的計算器,

from operator import add, sub, truediv, mul

operation = {
    "+" : add,
    "-" : sub,
    "/" : truediv,
    "*" : mul,
    "**" : pow
}

print(operation['+'](2,3))
print(operation['*'](2,3))
print(operation['**'](2,3))
print(operation['/'](10,3))

 

運行結果

20、鏈式函式呼叫

通過一行程式,可以呼叫多個不同的函式,進行計算,

def add(x,y):
    return x + y

def sub(x,y):
    return x - y

x,y = 2,3
print((sub if x > y else add)(x,y))
# 通過條件判斷執行的函式

 

運行結果

21、兩個數值交換

Python中的交換,不僅僅可以直接通過a,b = b,a的方式進行數值的交換,而且還可以進行串列等可迭代物件的交換,

x, y = 2, 3
print("交換前:x={}, y={}".format(x, y))
x, y = y, x
print("交換后:x={}, y={}".format(x, y))


x, y = [2, 3], [4,5]
print("交換前: x={}, y={}".format(x, y))
x, y = y, x
print("交換后:x={}, y={}".format(x, y))

 

運行結果

22、檢查是否有重復元素

對于檢查串列中是否有重復的元素,可以通過將串列轉換為set來快速檢查,

list1 = [1,2,3,4,2,4,5]
list2 = [1,2,3,4,5,6,7]
print("list1有重復元素:",len(list1) != len(set(list1)))
print("list2有重復元素:",len(list2) != len(set(list2)))

 

最后

# 兄弟們學習pytho n,有時候不知道怎么學,從哪里開始學,掌握了基本的一些# 語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識,
# 那么對于這些大末名片自取即可!兄弟們,我準備了大量的免費視頻教程,PDF電子書籍,以及源代碼!、
都在這個群 872937351 自即可 

 

 

以上的22個Python萬用公式,可以幫助大家解決大多數日常的Python問題,

當在程式運行的程序中遇到問題時,大家只需要耐心的排查,就能夠找到對應的錯誤,進行解決,在不斷解決錯誤的程序中不斷總結和提高,提升自己的能力和經驗,

今天的分享就到這里結束了,咱們下次見!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539845.html

標籤:其他

上一篇:Python 縮進語法的起源:上世紀 60-70 年代的大膽創意!

下一篇:Leetcode刷題第六周

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more