Mengalih keluar elemen daripada senarai (tatasusunan) dalam Python: clear(), pop(), remove(), del

Perniagaan

Untuk mengalih keluar elemen daripada senarai (tatasusunan) senarai jenis dalam Python, gunakan kaedah senarai clear(), pop() dan remove(). Anda juga boleh menentukan kedudukan dan julat senarai dengan menggunakan indeks atau hirisan dan kemudian padamkannya menggunakan pernyataan del.

Maklumat berikut disediakan di sini.

  • Keluarkan semua elemen:clear()
  • Padamkan elemen pada kedudukan yang ditentukan dan dapatkan nilainya.:pop()
  • Mencari elemen dengan nilai yang ditentukan dan mengalih keluar elemen pertama.:remove()
  • Memadam dengan menyatakan kedudukan dan julat dalam kepingan indeks:del
  • Batch padamkan berbilang elemen yang memenuhi kriteria.:senarai petunjuk kemasukan

Ambil perhatian bahawa senarai boleh menyimpan data daripada jenis yang berbeza, dan sangat berbeza daripada tatasusunan. Gunakan tatasusunan (pustaka standard) atau NumPy apabila anda ingin mengendalikan tatasusunan untuk proses yang memerlukan saiz memori atau alamat memori, atau untuk pengiraan berangka data berskala besar.

Keluarkan semua elemen:clear()

Dalam kaedah senarai clear(), semua elemen dialih keluar, menghasilkan senarai kosong.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Padamkan elemen pada kedudukan yang ditentukan dan dapatkan nilainya.:pop()

Kaedah pop() senarai boleh digunakan untuk memadam elemen pada kedudukan tertentu dan mendapatkan nilai elemen itu.

Nombor pertama (awal) ialah 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Nilai negatif juga boleh digunakan untuk menentukan kedudukan dari hujung (terakhir). Akhir (terakhir) ialah -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Jika hujah ditinggalkan dan tiada kedudukan ditentukan, elemen di hujung (terakhir) dipadamkan.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Menentukan kedudukan yang tidak wujud akan mengakibatkan ralat.

# print(l.pop(100))
# IndexError: pop index out of range

Ambil perhatian bahawa pop(0), yang mengalih keluar elemen pertama, memerlukan kos berikut dan bukan operasi yang cekap. Lihat halaman berikut pada wiki rasmi untuk kerumitan pengiraan pelbagai operasi pada senarai.
O(n)

O(1)Jenis deque disediakan dalam modul koleksi perpustakaan standard sebagai jenis yang memadamkan elemen ke bahagian atas pada kos ini. Sebagai contoh, jika anda ingin merawat data sebagai baris gilir (FIFO), adalah lebih cekap untuk menggunakan deque.

Mencari elemen dengan nilai yang ditentukan dan mengalih keluar elemen pertama.:remove()

Kaedah senarai remove() boleh digunakan untuk mencari elemen dengan nilai yang sama seperti yang ditentukan dan mengalih keluar elemen pertama.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Jika senarai mengandungi lebih daripada satu elemen yang sepadan dengan nilai yang ditentukan, hanya yang pertama akan dialih keluar.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Jika nilai yang tidak wujud dinyatakan, ralat berlaku.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Memadam dengan menyatakan kedudukan dan julat dalam kepingan indeks:del

Anda juga boleh menggunakan pernyataan del untuk mengalih keluar elemen daripada senarai.

Tentukan elemen yang akan dipadamkan oleh indeksnya. Indeks pertama (awal) ialah 0, dan indeks (akhir) terakhir ialah -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Jika anda menentukan julat dengan kepingan, anda boleh memadamkan berbilang elemen sekaligus.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

Ia juga mungkin untuk menentukan keseluruhan julat dan memadam semua elemen.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Jika anda menentukan julat dalam kepingan dengan cara ini dan menentukan langkah tambahan, anda boleh memadamkan berbilang elemen lompatan sekaligus.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Untuk maklumat lanjut tentang menghiris, lihat artikel berikut.

Batch padamkan berbilang elemen yang memenuhi kriteria.:senarai petunjuk kemasukan

Proses penyingkiran unsur-unsur yang memenuhi syarat adalah setara dengan proses meninggalkan (mengekstrak) unsur-unsur yang tidak memenuhi syarat. Notasi pemahaman senarai digunakan untuk pemprosesan jenis ini.

Contoh mengalih keluar unsur ganjil atau genap (= meninggalkan unsur genap atau ganjil) ditunjukkan di bawah.
%Ini adalah operator yang selebihnya.
i % 2
Ini ialah baki i dibahagikan dengan 2.

Dalam notasi pemahaman senarai, senarai baharu dibuat. Tidak seperti kaedah jenis senarai yang diperkenalkan setakat ini, senarai asal kekal tidak berubah.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Contoh lain. Pelbagai pemprosesan boleh dilakukan bergantung pada ungkapan bersyarat.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Jika anda ingin mengalih keluar elemen pendua, gunakan jenis set set.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']