Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dapatkan jumlah nombor dalam senarai rentetan menggunakan Python

Dapatkan jumlah nombor dalam senarai rentetan menggunakan Python

WBOY
WBOYke hadapan
2023-09-07 22:41:122554semak imbas

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

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.

Kaedah 1: Gunakan ungkapan biasa

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.

Tatabahasa

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 bagi

Contoh

ialah:

Contoh

Dalam 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))

Output

1368

Kaedah 2: Gunakan isdigit() dan senaraikan pemahaman

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.

Tatabahasa

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 bagi

Contoh

ialah:

Contoh

Dalam 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))

Output

45

Kaedah 3: Gunakan Split and Join

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.

Tatabahasa

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 bagi

Contoh

ialah:

Contoh

Dalam 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))

Output

1368

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam