Hướng dẫn how do you remove an element at an index from a list in python? - làm cách nào để xóa phần tử tại chỉ mục khỏi danh sách trong python?

Giống như những người khác đã đề cập POP và DEL là những cách hiệu quả để loại bỏ một mục của chỉ mục đã cho. Tuy nhiên, chỉ vì mục đích hoàn thành (vì điều tương tự có thể được thực hiện thông qua nhiều cách trong Python):

Sử dụng các lát cắt (điều này không thực hiện để loại bỏ mục khỏi danh sách ban đầu):

.

>>> a = [1, 2, 3, 4, 5, 6]
>>> index = 3 # Only positive index

>>> a = a[:index] + a[index+1 :]
# a is now [1, 2, 3, 5, 6]

Lưu ý: Xin lưu ý rằng phương pháp này không sửa đổi danh sách tại chỗ như

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
9 và
a = range(10)
index = 3
0. Thay vào đó, nó tạo ra hai bản sao danh sách (một từ đầu cho đến chỉ mục nhưng không có nó (
a = range(10)
index = 3
1) và một bản sau chỉ mục cho đến phần tử cuối cùng (
a = range(10)
index = 3
2)) và tạo một đối tượng danh sách mới bằng cách thêm cả hai. Điều này sau đó được chỉ định lại vào biến danh sách (
a = range(10)
index = 3
3). Đối tượng Danh sách cũ do đó bị bỏ rơi và do đó rác được thu thập (với điều kiện đối tượng danh sách ban đầu không được tham chiếu bởi bất kỳ biến nào khác ngoài a).
Please note that this method does not modify the list in place like
class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
9 and
a = range(10)
index = 3
0. It instead makes two copies of lists (one from the start until the index but without it (
a = range(10)
index = 3
1) and one after the index till the last element (
a = range(10)
index = 3
2)) and creates a new list object by adding both. This is then reassigned to the list variable (
a = range(10)
index = 3
3). The old list object is hence dereferenced and hence garbage collected (provided the original list object is not referenced by any variable other than a).

Điều này làm cho phương pháp này rất không hiệu quả và nó cũng có thể tạo ra các tác dụng phụ không mong muốn (đặc biệt là khi các biến khác trỏ đến đối tượng danh sách ban đầu không được sửa đổi).

Cảm ơn @markdickinson đã chỉ ra điều này ...

Câu trả lời tràn ngăn xếp này giải thích khái niệm cắt lát.

Cũng lưu ý rằng điều này chỉ hoạt động với các chỉ số tích cực.

Mặc dù sử dụng với các đối tượng, phương thức

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
8 phải được xác định và quan trọng hơn là phương thức
a = range(10)
index = 3
5 phải được xác định để trả về một đối tượng chứa các mục từ cả hai toán hạng.
a = range(10)
index = 3
5
method must have been defined to return an object containing items from both the operands.

Về bản chất, điều này hoạt động với bất kỳ đối tượng nào có định nghĩa lớp giống như:

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )

Điều này hoạt động với

a = range(10)
index = 3
6 xác định các phương thức
class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
8 và
a = range(10)
index = 3
5.

So sánh ba cách về hiệu quả:

Giả sử những điều sau đây được xác định trước:

a = range(10)
index = 3

Phương pháp

a = range(10)
index = 3
9:

Cho đến nay là phương pháp hiệu quả nhất. Nó hoạt động sẽ tất cả các đối tượng xác định phương thức

def del_method():
    global a
    global index
    del a[index]
0.

Việc tháo gỡ như sau:

Code:

def del_method():
    global a
    global index
    del a[index]

Disassembly:

 10    0 LOAD_GLOBAL     0 (a)
       3 LOAD_GLOBAL     1 (index)
       6 DELETE_SUBSCR   # This is the line that deletes the item
       7 LOAD_CONST      0 (None)
      10 RETURN_VALUE
None

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
9 Phương pháp:

Nó kém hiệu quả hơn phương pháp DEL và được sử dụng khi bạn cần có được mục đã xóa.

Code:

def pop_method():
    global a
    global index
    a.pop(index)

Disassembly:

 17     0 LOAD_GLOBAL     0 (a)
        3 LOAD_ATTR       1 (pop)
        6 LOAD_GLOBAL     2 (index)
        9 CALL_FUNCTION   1
       12 POP_TOP
       13 LOAD_CONST      0 (None)
       16 RETURN_VALUE

Các lát cắt và thêm phương thức.

Ít hiệu quả nhất.

Code:

def slice_method():
    global a
    global index
    a = a[:index] + a[index+1:]

Disassembly:

 24     0 LOAD_GLOBAL    0 (a)
        3 LOAD_GLOBAL    1 (index)
        6 SLICE+2
        7 LOAD_GLOBAL    0 (a)
       10 LOAD_GLOBAL    1 (index)
       13 LOAD_CONST     1 (1)
       16 BINARY_ADD
       17 SLICE+1
       18 BINARY_ADD
       19 STORE_GLOBAL   0 (a)
       22 LOAD_CONST     0 (None)
       25 RETURN_VALUE
None

Lưu ý: Trong cả ba sự tháo rời bỏ qua hai dòng cuối cùng về cơ bản là

def del_method():
    global a
    global index
    del a[index]
2. Ngoài ra, hai dòng đầu tiên đang tải các giá trị toàn cầu
a = range(10)
index = 3
3 và
def del_method():
    global a
    global index
    del a[index]
4.


Làm thế nào để xóa một đối tượng khỏi danh sách trong Python?

  • Làm thế nào để xóa phần tử khỏi chỉ mục được chỉ định của danh sách trong C#?

  • Làm thế nào để bạn xóa một phần tử mảng bằng chỉ mục của nó trong MongoDB

  • Python Prorgam để xóa chỉ mục các yếu tố trùng lặp khỏi danh sách khác

  • Chương trình Python để tính toán nguồn theo chỉ mục trong danh sách

Chương trình Java để xóa một phần tử khỏi danh sách với ListIterator

Làm cách nào để loại bỏ cùng một phần tử trong danh sách bằng Python

Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -

Thuật toán (bước)

  • Tạo một biến để lưu trữ danh sách đầu vào

  • Lưu trữ các phần tử danh sách trước chỉ mục đã cho và sau chỉ mục đã cho bằng cách sử dụng cắt có nghĩa là nó sẽ loại bỏ mục tại chỉ mục đã cho.

  • In danh sách sau khi xóa một mục danh sách được chỉ địnhdel keyword, to delete the list item at the given index.

  • Thí dụ

Đầu ra

"del list object [index]"

Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách

Sau đây là các thuật toán/các bước được tuân theo để thực hiện nhiệm vụ mong muốn

Nhập danh sách chỉ số mà tại đó các mục sẽ bị xóa

Sử dụng hàm Sắp xếp () (trả về một danh sách được sắp xếp của đối tượng đã cho là có thể. Nếu đảo ngược = true, sắp xếp theo thứ tự giảm dần và đảo ngược = false, sắp xếp theo thứ tự tăng dần. Mặc định là sai tức là tăng dần), để sắp xếp danh sách chỉ số đã cho Theo thứ tự giảm dần bằng cách truyền danh sách chỉ số đã cho và đảo ngược = đúng dưới dạng đối số.

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
0

Đầu ra

Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
1

Sau đây là các thuật toán/các bước được tuân theo để thực hiện nhiệm vụ mong muốn

Thuật toán (bước)

Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -

  • Nhập danh sách chỉ số mà tại đó các mục sẽ bị xóapop() function(Here pop() function removes the element of the list at the given index)

  • Thí dụ

Nhập danh sách chỉ số mà tại đó các mục sẽ bị xóa

Sử dụng hàm Sắp xếp () (trả về một danh sách được sắp xếp của đối tượng đã cho là có thể. Nếu đảo ngược = true, sắp xếp theo thứ tự giảm dần và đảo ngược = false, sắp xếp theo thứ tự tăng dần. Mặc định là sai tức là tăng dần), để sắp xếp danh sách chỉ số đã cho Theo thứ tự giảm dần bằng cách truyền danh sách chỉ số đã cho và đảo ngược = đúng dưới dạng đối số.

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
2

Đầu ra

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
3

Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách

Cắt có thể được sử dụng để tạo một danh sách mới bằng cách xóa mục tại một chỉ mục nhất định khỏi danh sách đầu vào ban đầu.

Chia danh sách thành ba phần, để xóa một phần tử tại Index N.

  • Các mục trong phạm vi từ 0 đến N-1

  • Các mục ở vị trí chỉ mục n

  • Các mục từ giá trị bắt đầu N+1 và mở rộng cho đến khi kết thúc danh sách.

Thuật toán (bước)

Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -

  • Tạo một biến để lưu trữ danh sách đầu vào

  • Lưu trữ các phần tử danh sách trước chỉ mục đã cho và sau chỉ mục đã cho bằng cách sử dụng cắt có nghĩa là nó sẽ loại bỏ mục tại chỉ mục đã cho.slicing which means it removes the item at the given index.

  • In danh sách sau khi xóa một mục danh sách được chỉ định

Thí dụ

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
4

Đầu ra

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
5

Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách

Thuật toán (bước)

Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -

  • Tạo một biến để lưu trữ danh sách đầu vào

  • Lưu trữ các phần tử danh sách trước chỉ mục đã cho và sau chỉ mục đã cho bằng cách sử dụng cắt có nghĩa là nó sẽ loại bỏ mục tại chỉ mục đã cho.

  • In danh sách sau khi xóa một mục danh sách được chỉ địnhsorted() function(returns a sorted list of the given iterable object. If reverse=True, sorts in descending order, and reverse=False, sorts in ascending order. Default is False i.e Ascending), to sort the given indices list in descending order by passing given indices list and reverse=True as arguments.

  • Thí dụfor loop, to traverse in the given indices list

  • Đầu raif conditional statement, to check whether the corresponding iterator index is less than the list length with the len() function(The number of items in an object is returned by the len() method)

  • Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách pop() function if the condition is true.

  • Sau đây là các thuật toán/các bước được tuân theo để thực hiện nhiệm vụ mong muốn

Nhập danh sách chỉ số mà tại đó các mục sẽ bị xóa

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
6

Đầu ra

class foo(object):
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return foo(self.items[index])

    def __add__(self, right):
        return foo( self.items + right.items )
7

Phương pháp 4: Xóa nhiều phần tử chỉ số khỏi danh sách

Sau đây là các thuật toán/các bước được tuân theo để thực hiện nhiệm vụ mong muốn

Hướng dẫn how do you remove an element at an index from a list in python? - làm cách nào để xóa phần tử tại chỉ mục khỏi danh sách trong python?

Nhập danh sách chỉ số mà tại đó các mục sẽ bị xóa

  • Sử dụng hàm Sắp xếp () (trả về một danh sách được sắp xếp của đối tượng đã cho là có thể. Nếu đảo ngược = true, sắp xếp theo thứ tự giảm dần và đảo ngược = false, sắp xếp theo thứ tự tăng dần. Mặc định là sai tức là tăng dần), để sắp xếp danh sách chỉ số đã cho Theo thứ tự giảm dần bằng cách truyền danh sách chỉ số đã cho và đảo ngược = đúng dưới dạng đối số.
  • Sử dụng vòng lặp for, để đi qua trong danh sách chỉ số đã cho
  • Sử dụng câu lệnh IF có điều kiện, để kiểm tra xem chỉ mục lặp tương ứng có nhỏ hơn độ dài danh sách với hàm Len () hay không (số lượng mục trong một đối tượng được trả về bằng phương thức Len ())
  • Xóa mục có mặt tại chỉ số tương ứng bằng hàm pop () nếu điều kiện là đúng.
  • In danh sách sau khi xóa các mục tại các chỉ số đã cho.
  • Thí dụ
  • Sự kết luận
  • Trong bài viết này, chúng tôi đã học được bốn cách khác nhau để loại bỏ một yếu tố khỏi danh sách theo chỉ mục. Chúng tôi cũng đã học cách sử dụng các hàm pop () và sort () để xóa nhiều yếu tố chỉ số khỏi danh sách.
  • Cập nhật vào ngày 19 tháng 9 năm 2022 10:56:33
  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để xóa một phần tử khỏi danh sách trong Python?
  • Làm thế nào để xóa một mục khỏi danh sách C# bằng cách sử dụng một chỉ mục?
  • Làm thế nào để xóa một phần tử khỏi danh sách Java?
  • Làm thế nào để xóa danh sách chỉ mục khỏi danh sách khác trong Python?
  • Làm thế nào để loại bỏ một phần tử mảng bằng chỉ mục của nó trong MongoDB?
  • Làm thế nào để xóa một phần tử khỏi danh sách mảng trong C#?