Hướng dẫn how do you remove the last occurrence of an element in a list python? - làm cách nào để xóa lần xuất hiện cuối cùng của một phần tử trong python danh sách?

Thực sự không có gì sai với mã của bạn cả. Nó hoạt động, rõ ràng lý do tại sao nó hoạt động, thật khó để hiểu sai hoặc hiểu lầm.

Vâng, bạn có thể làm cho nó nhanh hơn, nhưng chỉ bởi một yếu tố không đổi. . Cũng sẽ là O(N).) Và với chi phí làm cho nó phức tạp hơn.

Cách rõ ràng có lẽ nhanh hơn để làm điều đó là chỉ lặp bằng tay từ cuối cho đến khi chúng ta tìm thấy một giá trị, sau đó xóa giá trị đó. Điều đó cũng tránh phải đối phó với ValueError. Sử dụng enumerate có thể giúp đỡ nhưng làm cho đúng (mà không sao chép toàn bộ) có thể rất khó khăn.

Vì vậy, chúng ta hãy so sánh những thứ này với mã hiện tại của bạn, cả hai đã kết thúc nó trong một ____ 10/________ 11 và trong một

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
2:

def f_rev_ex(xs, s):
    xs.reverse()
    try:
        xs.remove(s)
    except ValueError:
        pass
    xs.reverse()

def f_rev_if(xs, s):
    if s in xs:
        xs.reverse()
        xs.remove(s)
        xs.reverse()

def f_for(xs, s):
    for i in range(len(xs)-1, -1, -1):
        if s == xs[i]:
            del xs[i]
            break

def f_enum(xs, s):
    for i, x in reversed(list(enumerate(xs))):
        if x == s:
            del xs[i]
            break

Đối với một danh sách nhỏ như của bạn, bài kiểm tra thậm chí không đáng để chạy, vì vậy tôi đã phát minh ra dữ liệu ngẫu nhiên của riêng mình (trong cuộc sống thực, tất nhiên là bạn phải biết dữ liệu của mình):

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop

Chà, cái cuối cùng đó không phải là một ý tưởng rất hay, nhưng cái còn lại nhanh hơn khoảng 25% so với những gì chúng tôi bắt đầu. Vì vậy, chúng tôi đã lưu toàn bộ 9 micro giây, trên dữ liệu 4 đơn đặt hàng lớn hơn dữ liệu thực tế của bạn. Tùy thuộc vào bạn liệu điều đó có xứng đáng với mã không thể đọc được, dễ bị ảnh hưởng hơn hay không. .

Phương pháp 3: Xóa phần tử cuối cùng khỏi danh sách bằng toán tử DEL. Toán tử DEL có thể xóa phần tử cuối cùng khỏi danh sách cùng với Index.

Làm thế nào để bạn tìm thấy sự xuất hiện cuối cùng của một nhân vật trong một danh sách trong Python?

Phương thức rfind () tìm thấy sự xuất hiện cuối cùng của giá trị được chỉ định. Phương thức rfind () trả về -1 nếu không tìm thấy giá trị.

if__name__=='__main__':__name__=='__main__':

    l=list(range(1,5))l =list(range(1,5))

& nbsp;print(l)    # [1, 2, 3, 4]

    l.pop()l.pop()

& nbsp; & nbsp; & nbsp; & nbsp; print (l) & nbsp;print(l)    # [1, 2, 3]

Tải xuống & nbsp; & nbsp; mã

& nbsp; Lưu ý rằng chức năng này không nêu ra bất kỳ lỗi nào trên một danh sách trống nhưng xây dựng một bản sao của danh sách, không được khuyến nghị.
The

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
5 function raises an
In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
8 if the list is empty as it tries to pop from an empty list.

3. Sử dụng câu lệnh reverse3

Một cách khác để xóa một phần tử khỏi danh sách bằng chỉ mục của nó là câu lệnh reverse3. Nó khác với hàm

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
6 vì nó không trả về phần tử bị loại bỏ. Không giống như chức năng cắt lát, điều này không tạo ra một danh sách mới.

if__name__=='__main__':__name__=='__main__':

    l=list(range(1,5))l =list(range(1,5))

& nbsp;print(l)    # [1, 2, 3, 4]

    l=l[:-1]l= l[:-1]

& nbsp; & nbsp; & nbsp; & nbsp; print (l) & nbsp;print(l)    # [1, 2, 3]

Tải xuống & nbsp; & nbsp; mã

& nbsp; Lưu ý rằng chức năng này không nêu ra bất kỳ lỗi nào trên một danh sách trống nhưng xây dựng một bản sao của danh sách, không được khuyến nghị.
Note that this function doesn’t raise any error on an empty list but constructs a copy of the list, which is not recommended.

3. Sử dụng câu lệnh reverse3

Một cách khác để xóa một phần tử khỏi danh sách bằng chỉ mục của nó là câu lệnh reverse3. Nó khác với hàm

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
6 vì nó không trả về phần tử bị loại bỏ. Không giống như chức năng cắt lát, điều này không tạo ra một danh sách mới.

if__name__=='__main__':__name__=='__main__':

    l=list(range(1,5))l =list(range(1,5))

& nbsp;print(l)    # [1, 2, 3, 4]

    dell[-1]del l[-1]

& nbsp; & nbsp; & nbsp; & nbsp; print (l) & nbsp;print(l)    # [1, 2, 3]

Tải xuống & nbsp; & nbsp; mã

& nbsp; Lưu ý rằng chức năng này không nêu ra bất kỳ lỗi nào trên một danh sách trống nhưng xây dựng một bản sao của danh sách, không được khuyến nghị.
The above code raises an

In [58]: xs = [random.choice(string.ascii_lowercase) for _ in range(10000)]
In [59]: %timeit y = x[:]; f_rev_ex(y, 'a')
10000 loops, best of 3: 34.7 µs per loop
In [60]: %timeit y = x[:]; f_rev_if(y, 'a')
10000 loops, best of 3: 35.1 µs per loop
In [61]: %timeit y = x[:]; f_for(y, 'a')
10000 loops, best of 3: 26.6 µs per loop
In [62]: %timeit y = x[:]; f_enum(y, 'a')
1000 loops, best of 3: 604 µs per loop
8 if the list is empty since it tries to access an index of the list which is out of range.

3. Sử dụng câu lệnh reverse3

Làm cách nào để loại bỏ sự xuất hiện cuối cùng của một danh sách trong Python?

Khoa học dữ liệu thực tế sử dụng Python..
Khởi tạo danh sách ..
Đảo ngược danh sách bằng phương pháp đảo ngược ..
Tìm chỉ mục của phần tử bằng phương thức chỉ mục ..
Chỉ số thực tế của phần tử là LEN (Danh sách) - INDEX - 1 ..
In chỉ số cuối cùng ..

Làm thế nào để bạn loại bỏ mọi sự xuất hiện của một phần tử trong danh sách Python?

Sử dụng hàm Filter () để xóa tất cả các phiên bản của một phần tử khỏi danh sách trong Python ..
Sử dụng danh sách hiểu để xóa tất cả các phiên bản của một phần tử khỏi danh sách trong Python ..
Sử dụng hàm Remove () để xóa tất cả các phiên bản của một phần tử khỏi danh sách trong Python ..

Phương pháp nào được sử dụng để loại bỏ phần tử cuối cùng khỏi danh sách?

Phương pháp 3: Xóa phần tử cuối cùng khỏi danh sách bằng toán tử DEL.Toán tử DEL có thể xóa phần tử cuối cùng khỏi danh sách cùng với Index.del operator. del operator can delete the last element from the list along with index.

Làm thế nào để bạn tìm thấy sự xuất hiện cuối cùng của một nhân vật trong một danh sách trong Python?

Phương thức rfind () tìm thấy sự xuất hiện cuối cùng của giá trị được chỉ định.Phương thức rfind () trả về -1 nếu không tìm thấy giá trị.rfind() method finds the last occurrence of the specified value. The rfind() method returns -1 if the value is not found.