Slice Assignment vs. Direct Assignment: Bila Menggunakan Pendekatan Yang Mana?

DDD
Lepaskan: 2024-10-19 08:12:02
asal
474 orang telah melayarinya

Slice Assignment vs. Direct Assignment: When to Use Which Approach?

Slice Assignment vs. Direct Assignment dalam Senarai

Walaupun menghiris ialah operasi biasa untuk mengekstrak elemen daripada senarai, penggunaannya dalam tugasan boleh mengelirukan. Mari kita bandingkan perbezaan antara tugasan slice dan tugasan langsung.

Tugas Langsung

a_list = ['foo', 'bar']
Salin selepas log masuk

Ini memberikan senarai baharu kepada nama a_list. Nilai asal yang disimpan di a_list dibuang dan senarai baharu menjadi satu-satunya objek yang dirujuk oleh a_list.

Slice Assignment

a_list[:] = ['foo', 'bar']
Salin selepas log masuk

Sebaliknya, slice assignment beroperasi berbeza. Ia memanggil kaedah __setitem__ pada objek a_list, menggunakan kepingan sebagai indeks dan senarai baharu sebagai nilai.

Perbezaan Utama

  • Pengubahsuaian Objek: Tugasan kepingan mengubah suai objek sedia ada yang ditunjuk oleh a_list. Tugasan langsung mencipta objek baharu dan menetapkannya kepada a_list.
  • __setitem__ Sokongan: a_list mesti menyokong __setitem__ dengan indeks hirisan untuk tugasan hirisan berfungsi.
  • Nilai Boleh Lelar: Objek di sebelah kanan tugasan mestilah boleh lelar untuk tugasan kepingan.
  • Pemusnahan Rujukan: Tiada nama ditunjuk pada objek di sebelah kanan dalam tugasan kepingan . Jika ia literal, ia akan dipadamkan selepas tugasan.

Aplikasi Tambahan

Selain menghiris keseluruhan senarai, tugasan hirisan mendayakan manipulasi lanjutan seperti:

  • Memadamkan item senarai: a_list[:] = []
  • Memasukkan nilai dalam senarai tengah: a_list[1:1] = [1, 2, 3]

Walau bagaimanapun, untuk hirisan lanjutan (dengan langkah tidak sama dengan satu), lelang sebelah kanan mesti mempunyai panjang yang betul untuk sepadan dengan hirisan.

Atas ialah kandungan terperinci Slice Assignment vs. Direct Assignment: Bila Menggunakan Pendekatan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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