Dalam Python, tambahkan K pada elemen terkecil dalam senarai tupel lajur

WBOY
Lepaskan: 2023-09-02 10:01:06
ke hadapan
583 orang telah melayarinya

Dalam Python, tambahkan K pada elemen terkecil dalam senarai tupel lajur

Memproses set data melibatkan mengenal pasti nilai minimum dalam lajur tertentu dan mengemas kininya dengan menambah nilai malar (K). Dengan melaksanakan penyelesaian yang dioptimumkan, kami boleh melakukan ini dengan cekap, yang penting untuk tugasan manipulasi dan analisis data.

Menggunakan senarai tupel ialah cara biasa untuk mewakili data berstruktur, di mana setiap tupel sepadan dengan baris dan mengandungi berbilang elemen atau atribut. Dalam kes ini, kami akan menumpukan pada lajur tertentu senarai tupel dan mencari elemen terkecil dalam lajur itu.

Memahami masalah

Sebelum melihat penyelesaiannya, mari kita fahami masalah tersebut dengan jelas. Kami mendapat senarai tupel, di mana setiap tupel mewakili satu baris data. Matlamat kami adalah untuk mencari elemen terkecil dalam lajur tertentu senarai dan menambah nilai malar (K) pada elemen terkecil itu. Senarai tupel yang dikemas kini harus mengekalkan struktur asal, dengan hanya elemen terkecil diubah suai.

Sebagai contoh, pertimbangkan senarai tupel berikut -

data = [(1, 4, 6), (2, 8, 3), (3, 5, 9), (4, 2, 7)]
Salin selepas log masuk

Jika kita ingin menambah 10 pada elemen terkecil dalam lajur kedua, senarai tupel yang dikemas kini hendaklah -

[(1, 14, 6), (2, 8, 3), (3, 5, 9), (4, 2, 7)]
Salin selepas log masuk

Dengan menjelaskan keperluan masalah, kami boleh terus menggariskan perkara yang berkesan.

Kaedah

Tambahkan nilai malar (K) dengan cekap pada elemen terkecil dalam lajur tertentu senarai tupel

new_tuple = tuple(tpl if i != column_index else tpl + K for i, tpl in enumerate(tuple_list[min_index]))
Salin selepas log masuk
Salin selepas log masuk

Dalam coretan kod ini, kami menggunakan pemahaman senarai untuk membuat tupel baharu. Kami mengulangi elemen pada min_index yang ditentukan dalam tupel. Jika indeks elemen semasa (i) sepadan dengan indeks_lajur yang dikehendaki, kami menambah K pada elemen itu. Jika tidak, kita biarkan elemen itu seperti sedia ada. Akhir sekali, kami menukar pemahaman senarai yang terhasil ke dalam tuple menggunakan fungsi tuple().

Langkah pelaksanaan

Kemas kini senarai tupel dengan menggantikan tuple pada indeks yang dikenal pasti dengan tuple baharu

tuple_list[min_index] = new_tuple
Salin selepas log masuk
Salin selepas log masuk

Dalam coretan kod ini, kami menggantikan tuple di min_index dalam tuple_list dengan new_tuple yang baru dibuat. Langkah ini mengubah suai senarai asal tupel di tempat, memastikan elemen terkecil dalam lajur yang diperlukan dikemas kini.

Mari pecahkan kaedah kepada langkah pelaksanaan -

  • Buat tupel baharu dengan menambah K pada elemen terkecil

new_tuple = tuple(tpl if i != column_index else tpl + K for i, tpl in enumerate(tuple_list[min_index]))
Salin selepas log masuk
Salin selepas log masuk

Dalam coretan kod ini, kami menggunakan pemahaman senarai untuk membuat tupel baharu. Kami mengulangi elemen pada min_index yang ditentukan dalam tupel. Jika indeks unsur semasa (i) sepadan dengan indeks_lajur yang dikehendaki, kami menambah K pada elemen itu. Jika tidak, kita biarkan elemen itu seperti sedia ada. Akhir sekali, kami menukar pemahaman senarai yang terhasil ke dalam tuple menggunakan fungsi tuple().

  • Kemas kini senarai tuple dengan menggantikan tuple pada indeks yang dikenal pasti dengan tuple baharu

tuple_list[min_index] = new_tuple
Salin selepas log masuk
Salin selepas log masuk

Dalam coretan kod ini, kami menggantikan tuple di min_index dalam tuple_list dengan new_tuple yang baru dibuat. Langkah ini mengubah suai senarai asal tupel di tempat, memastikan elemen terkecil dalam lajur yang diperlukan dikemas kini.

Sekarang kita telah menyelesaikan langkah pelaksanaan, mari kita teruskan untuk menunjukkan penyelesaian menggunakan contoh kod lengkap.

Contoh

Berikut ialah contoh kod Python lengkap yang melaksanakan penyelesaian -

def add_k_to_min_element(tuple_list, column_index, K):
   min_value = float('inf')
   min_index = -1

   # Iterate through the tuple list to find the minimum element and its index
   for i, tpl in enumerate(tuple_list):
      if tpl[column_index] < min_value:
         min_value = tpl[column_index]
         min_index = i

   # Create a new tuple by adding K to the minimum element
   new_tuple = tuple(tpl if i != column_index else tpl + K for i, tpl in enumerate(tuple_list[min_index]))

   # Update the tuple list by replacing the tuple at the identified index with the new tuple
   tuple_list[min_index] = new_tuple

   return tuple_list
Salin selepas log masuk

Dalam kod di atas, fungsi add_k_to_min_element mengambil tuple_list, column_index dan K sebagai parameter input. Ia mengulangi tuple_list untuk mencari elemen terkecil dan indeksnya. Ia kemudian mencipta tupel baharu dengan menambahkan K pada elemen terkecil. Akhir sekali, ia menggantikan tuple pada indeks yang dikenal pasti dengan tupel baharu dan mengembalikan tuple_list yang dikemas kini.

Analisis Prestasi

Kerumitan masa penyelesaian ini ialah O(n), dengan n ialah bilangan tupel dalam tuple_list. Ini kerana kami mengulangi senarai sekali untuk mencari elemen terkecil dan indeksnya.

Kerumitan ruang ialah O(1) kerana kami hanya menggunakan beberapa pembolehubah tambahan untuk menyimpan nilai dan indeks minimum. Penggunaan memori tidak bergantung pada saiz senarai tuple.

Penyelesaian ini menyediakan cara yang cekap untuk menambah nilai tetap kepada elemen terkecil dalam senarai tupel lajur tanpa melintasi keseluruhan senarai atau memerlukan struktur data tambahan. Ia boleh mengendalikan set data yang besar dengan cekap, menjadikannya sesuai untuk senario kehidupan sebenar.

Walau bagaimanapun, perlu diingat bahawa penyelesaian ini mengubah suai senarai tupel di tempatnya. Jika anda perlu mengekalkan senarai asal, anda boleh membuat salinan senarai dan melakukan pengubahsuaian pada salinan.

Untuk memastikan ketepatan dan kecekapan penyelesaian anda, disyorkan untuk mengujinya dengan pelbagai input dan kes tepi. Senario ujian boleh termasuk senarai tuple dengan saiz yang berbeza, nilai yang berbeza dalam lajur dan kes tepi seperti senarai tuple kosong atau lajur tanpa unsur.

Contoh coretan kod berikut menunjukkan cara mengukur prestasi fungsi add_k_to_min_element menggunakan modul timeit dalam Python -

import timeit

# Define the add_k_to_min_element function here

# Create a sample tuple list
tuple_list = [
   (1, 5, 3),
   (2, 7, 4),
   (3, 2, 8),
   (4, 9, 1)
]

# Set the column index and constant value
column_index = 2
K = 10

# Measure the performance of the add_k_to_min_element function
execution_time = timeit.timeit(lambda: add_k_to_min_element(tuple_list, column_index, K), number=10000)

print(f"Execution time: {execution_time} seconds")
Salin selepas log masuk

Dalam coretan kod ini, kami mengimport modul timeit dan mentakrifkan fungsi add_k_to_min_element. Kami kemudian membuat sampel tuple_list, tetapkan nilai column_index dan K, dan ukur masa pelaksanaan fungsi add_k_to_min_element menggunakan fungsi timeit.timeit. Kami menjalankan fungsi 10,000 kali dan mencetak masa pelaksanaan dalam beberapa saat.

Dengan menggunakan coretan kod ini, anda boleh mengukur prestasi fungsi add_k_to_min_element dan membandingkannya dengan input atau variasi masalah yang berbeza. Ini akan membolehkan anda menilai kecekapan penyelesaian anda dan menganalisis gelagat masa jalannya.

KESIMPULAN

Kami meneroka penyelesaian yang cekap untuk menambah nilai tetap pada elemen terkecil dalam senarai tupel lajur menggunakan Python. Dengan melaksanakannya langkah demi langkah, memahami analisis prestasi dan mengambil kira pengendalian dan ujian ralat, anda boleh melaksanakan penyelesaian itu dengan yakin ke dalam projek anda sendiri.

Atas ialah kandungan terperinci Dalam Python, tambahkan K pada elemen terkecil dalam senarai tupel lajur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!