国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) Python教程 [Python-CV圖像分割:Canny邊緣、分水嶺和K-Means方法

[Python-CV圖像分割:Canny邊緣、分水嶺和K-Means方法

Dec 11, 2024 am 05:33 AM

分割是圖像分析中的一項(xiàng)基本技術(shù),它允許我們根據(jù)對象、形狀或顏色將圖像劃分為有意義的部分。它在物體檢測、計(jì)算機(jī)視覺甚至藝術(shù)圖像處理等應(yīng)用中發(fā)揮著關(guān)鍵作用。但如何才能有效實(shí)現(xiàn)細(xì)分呢?幸運(yùn)的是,OpenCV (cv2) 提供了幾種用戶友好且強(qiáng)大的分割方法。

在本教程中,我們將探討三種流行的分割技術(shù):

  • Canny 邊緣檢測 – 非常適合勾畫物體輪廓。
  • 分水嶺算法 – 非常適合分離重疊區(qū)域。
  • K-Means 顏色分割 – 非常適合對圖像中的相似顏色進(jìn)行聚類。

為了使本教程引人入勝且實(shí)用,我們將使用來自日本大阪的衛(wèi)星和航空圖像,重點(diǎn)關(guān)注古代古墳。您可以從教程的 GitHub 頁面下載這些圖像和相應(yīng)的示例筆記本。

Canny 邊緣檢測到輪廓分割

Canny 邊緣檢測是一種簡單而強(qiáng)大的方法來識(shí)別圖像中的邊緣。它的工作原理是檢測強(qiáng)度快速變化的區(qū)域,這些區(qū)域通常是物體的邊界。該技術(shù)通過應(yīng)用強(qiáng)度閾值生成“薄邊緣”輪廓。讓我們深入了解它使用 OpenCV 的實(shí)現(xiàn)。

示例:檢測衛(wèi)星圖像中的邊緣
在這里,我們使用大阪的衛(wèi)星圖像,特別是古墳,作為測試用例。

import cv2 
import numpy as np
import matplotlib.pyplot as plt
files = sorted(glob("SAT*.png")) #Get png files 
print(len(files))
img=cv2.imread(files[0])
use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)

#Stadard values 
min_val = 100
max_val = 200
# Apply Canny Edge Detection
edges = cv2.Canny(gray, min_val, max_val)
#edges = cv2.Canny(gray, min_val, max_val,apertureSize=5,L2gradient = True )
False
# Show the result
plt.figure(figsize=(15, 5))
plt.subplot(131), plt.imshow(cv2.cvtColor(use_image, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.axis('off')
plt.subplot(132), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image'), plt.axis('off')
plt.subplot(133), plt.imshow(edges, cmap='gray')
plt.title('Canny Edges'), plt.axis('off')
plt.show()

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

輸出邊緣清晰地勾勒出古墳和其他感興趣區(qū)域的部分輪廓。然而,由于閾值過大,一些區(qū)域被遺漏了。結(jié)果在很大程度上取決于 min_val 和 max_val 的選擇以及圖像質(zhì)量。

為了增強(qiáng)邊緣檢測,我們可以對圖像進(jìn)行預(yù)處理以分散像素強(qiáng)度并減少噪聲。這可以使用直方圖均衡 (cv2.equalizeHist()) 和高斯模糊 (cv2.GaussianBlur()) 來實(shí)現(xiàn)。

use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)
gray_og = gray.copy()
gray = cv2.equalizeHist(gray)
gray = cv2.GaussianBlur(gray, (9, 9),1)

plt.figure(figsize=(15, 5))
plt.subplot(121), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image')
plt.subplot(122)
_= plt.hist(gray.ravel(), 256, [0,256],label="Equalized") 
_ = plt.hist(gray_og.ravel(), 256, [0,256],label="Original",histtype='step')
plt.legend()
plt.title('Grayscale Histogram')

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

這種預(yù)處理可以均勻強(qiáng)度分布并平滑圖像,這有助于 Canny 邊緣檢測算法捕獲更有意義的邊緣。

邊緣很有用,但它們僅表示邊界。為了分割封閉區(qū)域,我們將邊緣轉(zhuǎn)換為輪廓并可視化它們。

# Edges to contours 
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Calculate contour areas
areas = [cv2.contourArea(contour) for contour in contours]

# Normalize areas for the colormap
normalized_areas = np.array(areas)
if normalized_areas.max() > 0:
    normalized_areas = normalized_areas / normalized_areas.max()

# Create a colormap
cmap = plt.cm.jet

# Plot the contours with the color map
plt.figure(figsize=(10, 10))
plt.subplot(1,2,1)
plt.imshow(gray, cmap='gray', alpha=0.5)  # Display the grayscale image in the background
mask = np.zeros_like(use_image)
for contour, norm_area in zip(contours, normalized_areas):
    color = cmap(norm_area)  # Map the normalized area to a color
    color = [int(c*255) for c in color[:3]]
    cv2.drawContours(mask, [contour], -1, color,-1 )  # Draw contours on the image

plt.subplot(1,2,2)

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

上述方法用代表其相對區(qū)域的顏色突出顯示檢測到的輪廓。這種可視化有助于驗(yàn)證輪廓是否形成封閉體或僅形成線條。然而,在此示例中,許多輪廓仍然是未閉合的多邊形。進(jìn)一步的預(yù)處理或參數(shù)調(diào)整可以解決這些限制。

通過結(jié)合預(yù)處理和輪廓分析,Canny 邊緣檢測成為識(shí)別圖像中對象邊界的強(qiáng)大工具。然而,當(dāng)對象定義明確且噪聲最小時(shí),它的效果最佳。接下來,我們將探索 K 均值聚類以按顏色分割圖像,從而為相同數(shù)據(jù)提供不同的視角。

K均值聚類

K-Means 聚類是數(shù)據(jù)科學(xué)中一種流行的方法,用于將相似的項(xiàng)目分組為聚類,并且它對于基于顏色相似性的圖像分割特別有效。 OpenCV 的 cv2.kmeans 函數(shù)簡化了此過程,使其可以執(zhí)行對象分割、背景去除或視覺分析等任務(wù)。

在本節(jié)中,我們將使用 K 均值聚類將古墳?zāi)箞D像分割為相似顏色的區(qū)域。

首先,我們對圖像的 RGB 值應(yīng)用 K 均值聚類,將每個(gè)像素視為一個(gè)數(shù)據(jù)點(diǎn)。

import cv2 
import numpy as np
import matplotlib.pyplot as plt
files = sorted(glob("SAT*.png")) #Get png files 
print(len(files))
img=cv2.imread(files[0])
use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)

#Stadard values 
min_val = 100
max_val = 200
# Apply Canny Edge Detection
edges = cv2.Canny(gray, min_val, max_val)
#edges = cv2.Canny(gray, min_val, max_val,apertureSize=5,L2gradient = True )
False
# Show the result
plt.figure(figsize=(15, 5))
plt.subplot(131), plt.imshow(cv2.cvtColor(use_image, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.axis('off')
plt.subplot(132), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image'), plt.axis('off')
plt.subplot(133), plt.imshow(edges, cmap='gray')
plt.title('Canny Edges'), plt.axis('off')
plt.show()

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

在分割圖像中,古墳和周圍區(qū)域聚集成不同的顏色。然而,噪聲和顏色的微小變化會(huì)導(dǎo)致簇分散,這會(huì)給解釋帶來挑戰(zhàn)。

為了減少噪音并創(chuàng)建更平滑的聚類,我們可以在運(yùn)行 K-Means 之前應(yīng)用中值模糊。

use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)
gray_og = gray.copy()
gray = cv2.equalizeHist(gray)
gray = cv2.GaussianBlur(gray, (9, 9),1)

plt.figure(figsize=(15, 5))
plt.subplot(121), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image')
plt.subplot(122)
_= plt.hist(gray.ravel(), 256, [0,256],label="Equalized") 
_ = plt.hist(gray_og.ravel(), 256, [0,256],label="Original",histtype='step')
plt.legend()
plt.title('Grayscale Histogram')

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

模糊的圖像會(huì)產(chǎn)生更平滑的簇,減少噪音并使分割區(qū)域在視覺上更具凝聚力。

為了更好地理解分割結(jié)果,我們可以使用 matplotlib plt.fill_ Between;
創(chuàng)建獨(dú)特簇顏色的顏色圖

# Edges to contours 
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Calculate contour areas
areas = [cv2.contourArea(contour) for contour in contours]

# Normalize areas for the colormap
normalized_areas = np.array(areas)
if normalized_areas.max() > 0:
    normalized_areas = normalized_areas / normalized_areas.max()

# Create a colormap
cmap = plt.cm.jet

# Plot the contours with the color map
plt.figure(figsize=(10, 10))
plt.subplot(1,2,1)
plt.imshow(gray, cmap='gray', alpha=0.5)  # Display the grayscale image in the background
mask = np.zeros_like(use_image)
for contour, norm_area in zip(contours, normalized_areas):
    color = cmap(norm_area)  # Map the normalized area to a color
    color = [int(c*255) for c in color[:3]]
    cv2.drawContours(mask, [contour], -1, color,-1 )  # Draw contours on the image

plt.subplot(1,2,2)

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

這種可視化可以深入了解圖像中的主色及其相應(yīng)的 RGB 值,這對于進(jìn)一步分析非常有用。因?yàn)槲覀儸F(xiàn)在可以屏蔽并選擇我的顏色代碼區(qū)域。

簇的數(shù)量 (K) 顯著影響結(jié)果。增加 K 會(huì)創(chuàng)建更詳細(xì)的細(xì)分,而較低的值會(huì)產(chǎn)生更廣泛的分組。為了進(jìn)行實(shí)驗(yàn),我們可以迭代多個(gè) K 值。

import cv2 
import numpy as np
import matplotlib.pyplot as plt
files = sorted(glob("SAT*.png")) #Get png files 
print(len(files))
img=cv2.imread(files[0])
use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)

#Stadard values 
min_val = 100
max_val = 200
# Apply Canny Edge Detection
edges = cv2.Canny(gray, min_val, max_val)
#edges = cv2.Canny(gray, min_val, max_val,apertureSize=5,L2gradient = True )
False
# Show the result
plt.figure(figsize=(15, 5))
plt.subplot(131), plt.imshow(cv2.cvtColor(use_image, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.axis('off')
plt.subplot(132), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image'), plt.axis('off')
plt.subplot(133), plt.imshow(edges, cmap='gray')
plt.title('Canny Edges'), plt.axis('off')
plt.show()

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

不同 K 值的聚類結(jié)果揭示了細(xì)節(jié)和簡單性之間的權(quán)衡:

?較低的 K 值(例如 2-3):聚類范圍廣泛,區(qū)分清晰,適合高級(jí)分割。
?更高的 K 值(例如 12-15):更詳細(xì)的分割,但代價(jià)是增加復(fù)雜性和潛在的過度分割。

K-Means 聚類是一種基于顏色相似性分割圖像的強(qiáng)大技術(shù)。通過正確的預(yù)處理步驟,它可以生成清晰且有意義的區(qū)域。然而,其性能取決于 K 的選擇、輸入圖像的質(zhì)量以及所應(yīng)用的預(yù)處理。接下來,我們將探索分水嶺算法,該算法利用地形特征來實(shí)現(xiàn)對象和區(qū)域的精確分割。

分水嶺分割

分水嶺算法的靈感來自地形圖,其中分水嶺劃分流域。此方法將灰度強(qiáng)度值視為高程,有效地創(chuàng)建“峰”和“谷”。通過識(shí)別感興趣區(qū)域,該算法可以分割具有精確邊界的對象。它對于分離重疊對象特別有用,使其成為細(xì)胞分割、對象檢測和區(qū)分密集特征等復(fù)雜場景的絕佳選擇。

第一步是預(yù)處理圖像以增強(qiáng)特征,然后應(yīng)用分水嶺算法。

use_image= img[0:600,700:1300]
gray = cv2.cvtColor(use_image, cv2.COLOR_BGR2GRAY)
gray_og = gray.copy()
gray = cv2.equalizeHist(gray)
gray = cv2.GaussianBlur(gray, (9, 9),1)

plt.figure(figsize=(15, 5))
plt.subplot(121), plt.imshow(gray, cmap='gray')
plt.title('Grayscale Image')
plt.subplot(122)
_= plt.hist(gray.ravel(), 256, [0,256],label="Equalized") 
_ = plt.hist(gray_og.ravel(), 256, [0,256],label="Original",histtype='step')
plt.legend()
plt.title('Grayscale Histogram')

分段區(qū)域和邊界可以與中間處理步驟一起可視化。

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods

# Edges to contours 
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Calculate contour areas
areas = [cv2.contourArea(contour) for contour in contours]

# Normalize areas for the colormap
normalized_areas = np.array(areas)
if normalized_areas.max() > 0:
    normalized_areas = normalized_areas / normalized_areas.max()

# Create a colormap
cmap = plt.cm.jet

# Plot the contours with the color map
plt.figure(figsize=(10, 10))
plt.subplot(1,2,1)
plt.imshow(gray, cmap='gray', alpha=0.5)  # Display the grayscale image in the background
mask = np.zeros_like(use_image)
for contour, norm_area in zip(contours, normalized_areas):
    color = cmap(norm_area)  # Map the normalized area to a color
    color = [int(c*255) for c in color[:3]]
    cv2.drawContours(mask, [contour], -1, color,-1 )  # Draw contours on the image

plt.subplot(1,2,2)

該算法成功識(shí)別不同的區(qū)域并在對象周圍繪制清晰的邊界。在本例中,古墳被精確分割。然而,該算法的性能在很大程度上取決于閾值處理、噪聲去除和形態(tài)學(xué)操作等預(yù)處理步驟。

添加高級(jí)預(yù)處理,例如直方圖均衡或自適應(yīng)模糊,可以進(jìn)一步增強(qiáng)結(jié)果。例如:

# Kmean color segmentation
use_image= img[0:600,700:1300]
#use_image = cv2.medianBlur(use_image, 15)


 # Reshape image for k-means
pixel_values = use_image.reshape((-1, 3)) if len(use_image.shape) == 3 else use_image.reshape((-1, 1))
pixel_values = np.float32(pixel_values)

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 3
attempts=10
ret,label,center=cv2.kmeans(pixel_values,K,None,criteria,attempts,cv2.KMEANS_PP_CENTERS)

centers = np.uint8(center)
segmented_data = centers[label.flatten()]
segmented_image = segmented_data.reshape(use_image.shape)

plt.figure(figsize=(10, 6))
plt.subplot(1,2,1),plt.imshow(use_image[:,:,::-1])
plt.title("RGB View")
plt.subplot(1,2,2),plt.imshow(segmented_image[:,:,[2,1,0]])
plt.title(f"Kmean Segmented Image K={K}")

[Python-CVImage Segmentation : Canny Edges, Watershed, and K-Means Methods
通過這些調(diào)整,可以準(zhǔn)確分割更多區(qū)域,并最大限度地減少噪聲偽影。

分水嶺算法在需要精確邊界劃分和重疊對象分離的場景中表現(xiàn)出色。通過利用預(yù)處理技術(shù),它甚至可以有效地處理像古墳古墳區(qū)域這樣的復(fù)雜圖像。然而,它的成功取決于仔細(xì)的參數(shù)調(diào)整和預(yù)處理。

結(jié)論

分割是圖像分析中的重要工具,提供了隔離和理解圖像中不同元素的途徑。本教程演示了三種強(qiáng)大的分割技術(shù):Canny 邊緣檢測、K 均值聚類和分水嶺算法,每種技術(shù)都是針對特定應(yīng)用程序量身定制的。從勾勒出大阪古代古墳的輪廓,到聚類城市景觀和劃分不同區(qū)域,這些方法凸顯了 OpenCV 在應(yīng)對現(xiàn)實(shí)世界挑戰(zhàn)方面的多功能性。

現(xiàn)在去將其中的一些方法應(yīng)用到您選擇的應(yīng)用程序中,并發(fā)表評(píng)論并分享結(jié)果。另外,如果您知道任何其他簡單的分割方法,也請分享

以上是[Python-CV圖像分割:Canny邊緣、分水嶺和K-Means方法的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

Python類中的多態(tài)性 Python類中的多態(tài)性 Jul 05, 2025 am 02:58 AM

多態(tài)是Python面向?qū)ο缶幊讨械暮诵母拍?,指“一種接口,多種實(shí)現(xiàn)”,允許統(tǒng)一處理不同類型的對象。1.多態(tài)通過方法重寫實(shí)現(xiàn),子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實(shí)現(xiàn)。2.多態(tài)的實(shí)際用途包括簡化代碼結(jié)構(gòu)、增強(qiáng)可擴(kuò)展性,例如圖形繪制程序中統(tǒng)一調(diào)用draw()方法,或游戲開發(fā)中處理不同角色的共同行為。3.Python實(shí)現(xiàn)多態(tài)需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對象實(shí)現(xiàn)相同方法即可,這稱為“鴨子類型”。4.注意事項(xiàng)包括保持方

什么是python的列表切片? 什么是python的列表切片? Jun 29, 2025 am 02:15 AM

ListslicinginPythonextractsaportionofalistusingindices.1.Itusesthesyntaxlist[start:end:step],wherestartisinclusive,endisexclusive,andstepdefinestheinterval.2.Ifstartorendareomitted,Pythondefaultstothebeginningorendofthelist.3.Commonusesincludegetting

python`@classmethod'裝飾師解釋了 python`@classmethod'裝飾師解釋了 Jul 04, 2025 am 03:26 AM

類方法是Python中通過@classmethod裝飾器定義的方法,其第一個(gè)參數(shù)為類本身(cls),用于訪問或修改類狀態(tài)。它可通過類或?qū)嵗{(diào)用,影響的是整個(gè)類而非特定實(shí)例;例如在Person類中,show_count()方法統(tǒng)計(jì)創(chuàng)建的對象數(shù)量;定義類方法時(shí)需使用@classmethod裝飾器并將首參命名為cls,如change_var(new_value)方法可修改類變量;類方法與實(shí)例方法(self參數(shù))、靜態(tài)方法(無自動(dòng)參數(shù))不同,適用于工廠方法、替代構(gòu)造函數(shù)及管理類變量等場景;常見用途包括從

Python函數(shù)參數(shù)和參數(shù) Python函數(shù)參數(shù)和參數(shù) Jul 04, 2025 am 03:26 AM

參數(shù)(parameters)是定義函數(shù)時(shí)的占位符,而傳參(arguments)是調(diào)用時(shí)傳入的具體值。1.位置參數(shù)需按順序傳遞,順序錯(cuò)誤會(huì)導(dǎo)致結(jié)果錯(cuò)誤;2.關(guān)鍵字參數(shù)通過參數(shù)名指定,可改變順序且提高可讀性;3.默認(rèn)參數(shù)值在定義時(shí)賦值,避免重復(fù)代碼,但應(yīng)避免使用可變對象作為默認(rèn)值;4.args和*kwargs可處理不定數(shù)量的參數(shù),適用于通用接口或裝飾器,但應(yīng)謹(jǐn)慎使用以保持可讀性。

如何使用CSV模塊在Python中使用CSV文件? 如何使用CSV模塊在Python中使用CSV文件? Jun 25, 2025 am 01:03 AM

Python的csv模塊提供了讀寫CSV文件的簡單方法。1.讀取CSV文件時(shí),可使用csv.reader()逐行讀取,并將每行數(shù)據(jù)作為字符串列表返回;若需通過列名訪問數(shù)據(jù),則可用csv.DictReader(),它將每行映射為字典。2.寫入CSV文件時(shí),使用csv.writer()并調(diào)用writerow()或writerows()方法寫入單行或多行數(shù)據(jù);若要寫入字典數(shù)據(jù),則使用csv.DictWriter(),需先定義列名并通過writeheader()寫入表頭。3.處理邊緣情況時(shí),模塊自動(dòng)處理

解釋Python發(fā)電機(jī)和迭代器。 解釋Python發(fā)電機(jī)和迭代器。 Jul 05, 2025 am 02:55 AM

迭代器是實(shí)現(xiàn)__iter__()和__next__()方法的對象,生成器是簡化版的迭代器,通過yield關(guān)鍵字自動(dòng)實(shí)現(xiàn)這些方法。1.迭代器每次調(diào)用next()返回一個(gè)元素,無更多元素時(shí)拋出StopIteration異常。2.生成器通過函數(shù)定義,使用yield按需生成數(shù)據(jù),節(jié)省內(nèi)存且支持無限序列。3.處理已有集合時(shí)用迭代器,動(dòng)態(tài)生成大數(shù)據(jù)或需惰性求值時(shí)用生成器,如讀取大文件時(shí)逐行加載。注意:列表等可迭代對象不是迭代器,迭代器到盡頭后需重新創(chuàng)建,生成器只能遍歷一次。

如何在Python中結(jié)合兩個(gè)列表? 如何在Python中結(jié)合兩個(gè)列表? Jun 30, 2025 am 02:04 AM

合并兩個(gè)列表有多種方法,選擇合適方式可提升效率。1.使用 號(hào)拼接生成新列表,如list1 list2;2.使用 =修改原列表,如list1 =list2;3.使用extend()方法在原列表上操作,如list1.extend(list2);4.使用號(hào)解包合并(Python3.5 ),如[list1,*list2],支持靈活組合多個(gè)列表或添加元素。不同方法適用于不同場景,需根據(jù)是否修改原列表及Python版本進(jìn)行選擇。

如何在Python中調(diào)用功能? 如何在Python中調(diào)用功能? Jun 25, 2025 am 12:59 AM

要調(diào)用Python中的函數(shù),需先定義函數(shù)再使用函數(shù)名加括號(hào)的形式進(jìn)行調(diào)用。1.使用def關(guān)鍵字定義函數(shù),如defgreet():print("Hello,world!");2.通過函數(shù)名后加括號(hào)調(diào)用函數(shù),如greet();3.若函數(shù)需要參數(shù),調(diào)用時(shí)在括號(hào)內(nèi)傳入對應(yīng)值,如defgreet(name):print(f"Hello,{name}!")和greet("Alice");4.可傳遞多個(gè)參數(shù),如defadd(a,b):result=a

See all articles