Rumah > Artikel > pembangunan bahagian belakang > Dapatkan jumlah nombor dalam senarai rentetan menggunakan Python
Dalam Python, kita boleh menggunakan pelbagai kaedah untuk menjumlahkan nombor dalam senarai rentetan, seperti menggunakan ungkapan biasa, menggunakan isdigit() dan senarai pemahaman, menggunakan pemisahan dan penyambungan, dsb. Apabila bekerja dengan senarai yang mengandungi rentetan, anda sering menghadapi situasi di mana anda perlu mengekstrak dan menjumlahkan nilai berangka daripada rentetan ini. Ini amat berguna apabila bekerja dengan fail teks, fail log atau mengikis web, contohnya. Dalam artikel ini, kami akan menggunakan contoh dan algoritma yang berbeza untuk memahami kaedah ini.
Algoritma umum untuk mencari jumlah nombor dalam senarai rentetan menggunakan Python adalah seperti berikut:
Tentukan fungsi yang mengambil senarai rentetan sebagai input.
Sambungkan semua elemen dalam senarai rentetan menjadi satu rentetan.
Gunakan corak atau kaedah untuk mengekstrak nilai berangka daripada rentetan.
Tukar nilai yang diekstrak kepada integer.
Jumlah senarai integer.
Kembalikan hasil penjumlahan sebagai nilai pulangan.
Ekspresi biasa menyediakan cara yang cekap untuk memadankan corak dalam rentetan. Dengan mentakrifkan corak dan menggunakan fungsi re.findall(), kita boleh mengekstrak semua nilai daripada senarai rentetan. Nilai-nilai ini kemudiannya ditukar kepada integer dan dijumlahkan untuk mendapatkan hasil akhir.
numbers = [int(num) for num in re.findall(pattern, ''.join(string_list))]
Di sini, pemahaman senarai [int(num) untuk num dalam re.findall(pattern, ''.join(string_list))] digunakan untuk menukar rentetan yang dipadankan kepada integer.
Terjemahan bahasa Cina bagiDalam contoh di atas, kami mempunyai string_list dengan tiga elemen. Panggil fungsi sum_numbers() dengan string_list sebagai argumen. Corak ungkapan biasa r"d+" sepadan dengan satu atau lebih nombor dalam setiap elemen senarai. Nombor yang sepadan diekstrak menggunakan pemahaman senarai dan ditukar kepada integer. Akhirnya, fungsi sum() mengira jumlah nombor ini.
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
Kaedah ini menggunakan kaedah isdigit(), yang digunakan untuk menyemak sama ada aksara ialah digit, digabungkan dengan pemahaman senarai. Dengan mengulangi setiap aksara dalam senarai rentetan dan menapis aksara bukan angka, kita boleh menukar nombor yang tinggal kepada integer. Senarai yang terhasil kemudiannya dijumlahkan untuk mendapatkan jumlah yang dikehendaki.
numbers = [int(char) for item in string_list for char in item if char.isdigit()]
Di sini, pemahaman senarai [int(char) untuk item dalam string_list untuk char dalam item jika char.isdigit()] digunakan untuk melelakan setiap aksara dalam setiap elemen dalam string_list. Kaedah isdigit() digunakan untuk menyemak sama ada aksara ialah digit.
Terjemahan bahasa Cina bagiDalam contoh di bawah, kami mempunyai string_list yang sama seperti sebelumnya. Panggil fungsi sum_numbers() dengan string_list sebagai argumen. Pemahaman senarai berulang pada setiap aksara dalam setiap elemen string_list. Kaedah isdigit() menyemak sama ada aksara ialah digit dan jika ya, menukarkannya kepada integer. Kemudian gunakan fungsi sum() untuk menjumlahkan senarai nombor yang terhasil.
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
Dalam kaedah ini, elemen senarai rentetan digabungkan menjadi rentetan tunggal menggunakan kaedah join(). Rentetan bercantum kemudiannya dibahagikan kepada senarai perkataan. Dengan mengulangi setiap perkataan dan menapis perkataan bukan angka, kita boleh menukar perkataan yang tinggal kepada integer. Akhir sekali, jumlahkan senarai nombor yang terhasil untuk mendapatkan hasil yang diingini.
numbers = ''.join(string_list).split() numbers = [int(num) for num in numbers if num.isdigit()]
Di sini, gunakan kaedah join() untuk menggabungkan semua elemen string_list ke dalam rentetan.
Kemudian gunakan kaedah split() pada rentetan bercantum untuk memisahkannya menjadi senarai perkataan. Gunakan pemahaman senarai [int(num) untuk num dalam nombor jika num.isdigit()] untuk lelaran melalui setiap elemen dalam senarai nombor dan tukarkannya kepada integer jika ia hanya mengandungi nombor.
Terjemahan bahasa Cina bagiDalam contoh di bawah, kami menggunakan fungsi filter() dan str.isdigit sebagai syarat penapis untuk mengekstrak bahagian digit sahaja daripada setiap item senarai rentetan. Kami kemudiannya menyertai nombor yang ditapis menggunakan ''.join() dan menukar hasilnya kepada integer menggunakan 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
Dalam artikel ini, kami membincangkan cara mencari jumlah nombor dalam senarai rentetan menggunakan kaedah berbeza dalam Python. Kami membincangkan tiga kaedah: menggunakan ungkapan biasa (re), memanfaatkan kaedah isdigit() dalam pemahaman senarai, dan menggunakan operasi split dan join. Setiap kaedah mempunyai kelebihan tersendiri dan boleh digunakan bergantung kepada keperluan khusus tugas.
Atas ialah kandungan terperinci Dapatkan jumlah nombor dalam senarai rentetan menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!