使用Python計算字串列表中數字的總和
在Python中,我們可以使用多種方法來計算字串列表中數字的總和,例如使用正則表示式、使用isdigit()和列表推導式、使用分割和連線等。當處理包含字串的Python列表時,經常會遇到需要從這些字串中提取並計算數值的情況。這在處理來自文字檔案、日誌檔案或網路抓取的資料時尤其有用。在本文中,我們將透過不同的示例和演算法來理解這些方法。
演算法
使用Python查詢字串列表中數字總和的通用演算法如下:
定義一個接受字串列表作為輸入的函式。
將字串列表的所有元素連線成單個字串。
應用模式或方法從字串中提取數值。
將提取的值轉換為整數。
計算整數列表的總和。
返回總和作為結果。
方法1:使用正則表示式
正則表示式提供了一種有效匹配字串中模式的方法。透過定義模式並使用re.findall()函式,我們可以從字串列表中提取所有數值。然後將這些值轉換為整數並求和以獲得最終結果。
語法
numbers = [int(num) for num in re.findall(pattern, ''.join(string_list))]
這裡,列表推導式[int(num) for num in re.findall(pattern, ''.join(string_list))]用於將匹配的字串轉換為整數。
示例
在上面的示例中,我們有一個包含三個元素的string_list。sum_numbers()函式以string_list作為引數被呼叫。正則表示式模式r"\d+"匹配列表中每個元素中一個或多個數字。匹配的數字使用列表推導式提取並轉換為整數。最後,sum()函式計算這些數字的總和。
import re
def sum_numbers(string_list):
pattern = r"\d+"
numbers = [int(num) for num in re.findall(pattern, ''.join(string_list))]
return sum(numbers)
string_list = ['abc123', 'def456', 'ghi789']
print(sum_numbers(string_list))
輸出
1368
方法2:使用isdigit()和列表推導式
此方法使用isdigit()方法(檢查字元是否為數字)與列表推導式結合使用。透過迭代字串列表中的每個字元並過濾掉非數字字元,我們可以將剩餘的數字轉換為整數。然後對生成的列表求和以獲得所需的總和。
語法
numbers = [int(char) for item in string_list for char in item if char.isdigit()]
這裡,列表推導式[int(char) for item in string_list for char in item if char.isdigit()]用於迭代string_list中每個元素的每個字元。isdigit()方法用於檢查字元是否為數字。
示例
在下面的示例中,我們與之前一樣使用相同的string_list。sum_numbers()函式以string_list作為引數被呼叫。列表推導式迭代string_list中每個元素的每個字元。isdigit()方法檢查字元是否為數字,如果是,則將其轉換為整數。然後使用sum()函式對生成的數字列表求和。
def sum_numbers(string_list):
numbers = [int(char) for item in string_list for char in item if char.isdigit()]
return sum(numbers)
string_list = ['abc123', 'def456', 'ghi789']
print(sum_numbers(string_list))
輸出
45
方法3:使用分割和連線
在此方法中,字串列表的元素使用join()方法連線成單個字串。然後將連線的字串分割成單詞列表。透過迭代每個單詞並過濾掉非數字單詞,我們可以將剩餘的單詞轉換為整數。最後,對生成的數字列表求和以獲得所需的結果。
語法
numbers = ''.join(string_list).split() numbers = [int(num) for num in numbers if num.isdigit()]
這裡,join()方法用於將string_list的所有元素連線成單個字串。
然後將split()方法應用於連線的字串以將其分割成單詞列表。列表推導式[int(num) for num in numbers if num.isdigit()]用於迭代numbers列表中的每個元素,如果它僅由數字組成,則將其轉換為整數。
示例
在下面的示例中,我們使用filter()函式和str.isdigit作為過濾條件,我們可以從string列表中的每個專案中提取數字。然後,我們使用''.join()連線過濾後的數字,並使用int()將生成的字串轉換為整數。
def sum_numbers(string_list):
numbers = [int(''.join(filter(str.isdigit, item))) for item in string_list]
return sum(numbers)
string_list = ['abc123', 'def456', 'ghi789']
print(sum_numbers(string_list))
輸出
1368
結論
在本文中,我們討論瞭如何使用Python中不同的方法查詢字串列表中數字的總和。我們討論了三種方法:使用正則表示式(re)、使用isdigit()方法與列表推導式結合,以及使用分割和連線操作。每種方法都有其自身的優點,可以根據任務的具體要求使用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP