Hướng dẫn what is the alternative of append in python? - sự thay thế của append trong python là gì?

Đối với phương thức thêm bên dưới:

def __add__(self, other):
    self.str_list.append(other)       
    self.count += 1
    return self.str_list

Làm thế nào tôi có thể viết lại điều này mà không cần thêm vào?without append?

PS:

1) STR_LIST là một biến thể hiện của danh sách loại được khai báo trong init

2) Không sử dụng các chức năng sẵn có được sử dụng.

Hỏi ngày 26 tháng 4 năm 2017 lúc 3:34Apr 26, 2017 at 3:34

Hướng dẫn what is the alternative of append in python? - sự thay thế của append trong python là gì?

4

Đó là một lời trêu ghẹo não thú vị, thách thức được thêm vào danh sách mà không sử dụng chức năng tích hợp. Tôi chỉ có thể nghĩ về một cách tiếp cận:

self.str_list = [*self.str_list, other]       

Các phương pháp khác như

self.str_list = [*self.str_list, other]       
3 về mặt kỹ thuật bằng cách sử dụng phương pháp tích hợp
self.str_list = [*self.str_list, other]       
4 vì vậy hãy cẩn thận với mục đích của bạn, bất kể nó có thể là gì.

Đã trả lời ngày 26 tháng 4 năm 2017 lúc 3:54Apr 26, 2017 at 3:54

EyueldkeyueldkEyuelDK

2.8692 Huy hiệu vàng18 Huy hiệu bạc26 Huy hiệu đồng2 gold badges18 silver badges26 bronze badges

4

Thêm các yếu tố vào danh sách

Danh sách là một trong những cấu trúc dữ liệu hữu ích nhất có sẵn trong Python hoặc thực sự là bất kỳ ngôn ngữ lập trình nào, vì chúng được sử dụng trong rất nhiều thuật toán và giải pháp khác nhau.

Khi chúng tôi đã tạo một danh sách, thường thì chúng tôi có thể cần thêm các yếu tố mới vào nó, cho dù đó là ở cuối, bắt đầu hoặc ở đâu đó ở giữa. Python cung cấp cho chúng tôi ba phương pháp khác nhau để làm như vậy. Trong bài viết này, tôi sẽ hiển thị sự khác biệt giữa các phương thức

self.str_list = [*self.str_list, other]       
5,
self.str_list = [*self.str_list, other]       
6 và
self.str_list = [*self.str_list, other]       
7.

Nối

Phương pháp này thêm một phần tử ở cuối danh sách hiện có. Cú pháp để sử dụng nó là:

a.append(x)

Ở đây biến

self.str_list = [*self.str_list, other]       
8 là danh sách của chúng tôi và
self.str_list = [*self.str_list, other]       
9 là yếu tố cần thêm. Biểu thức này tương đương với
a.append(x)
0.

Ví dụ: đây là cách sử dụng nó để đặt phần tử "y" ở cuối danh sách của chúng tôi,

self.str_list = [*self.str_list, other]       
8:

a = [1, 'x', 2]
a.append('y')

print(a)

Chạy mã này sẽ dẫn đến đầu ra sau:

$ python append.py
[1, 'x', 2, 'y']

Chèn

Phương thức này chèn một mục tại một vị trí được chỉ định trong danh sách đã cho. Cú pháp là:

a.insert(i, x)

Ở đây đối số

a.append(x)
2 là chỉ số của phần tử trước đó để chèn phần tử
self.str_list = [*self.str_list, other]       
9. Do đó,
a.append(x)
4 là điều tương tự như
a.append(x)
5. Mặc dù, sức mạnh của phương pháp này đi vào sử dụng nó để đặt các mục ở đâu đó trong danh sách chứ không phải ở cuối. Nếu bạn chỉ cần thêm một yếu tố vào cuối danh sách thì
self.str_list = [*self.str_list, other]       
5 hoạt động tốt cho điều đó và nhanh hơn (vấn đề quan trọng đối với danh sách lớn).

Ví dụ:

a = [1, 'x', 'y']
a.insert(2, 2)

print(a)

Mã này sẽ dẫn đến đầu ra sau:

$ python insert.py
[1, 'x', 2, 'y']

Như bạn có thể thấy, phần tử được đưa ra được đặt ở bất cứ đâu trong danh sách mà chúng tôi chỉ định. Điều này hoạt động tốt khi bạn có một danh sách trong đó các mục của nó được đặt hàng, vì vậy bạn không thể thêm phần tử của mình vào cuối, giống như bạn sẽ làm với

self.str_list = [*self.str_list, other]       
5.

Gia hạn

Phương pháp này thêm các yếu tố (lưu ý số nhiều của nó!) Danh sách kết quả là một trong đó có tất cả các yếu tố của cả hai danh sách.

Cú pháp sử dụng phương pháp này là:

a.extend(x)

Trong trường hợp này

self.str_list = [*self.str_list, other]       
8 là danh sách của chúng tôi và
self.str_list = [*self.str_list, other]       
9 là một đối tượng có thể đi được, chẳng hạn như một danh sách khác. Phương pháp này tương đương với
a = [1, 'x', 2]
a.append('y')

print(a)
0.

Ví dụ:

a = [1, 'x', 'y']
b = [1, 2]
a.extend(b)

print(a)

Mã này sẽ dẫn đến đầu ra sau:

Như bạn có thể thấy, phần tử được đưa ra được đặt ở bất cứ đâu trong danh sách mà chúng tôi chỉ định. Điều này hoạt động tốt khi bạn có một danh sách trong đó các mục của nó được đặt hàng, vì vậy bạn không thể thêm phần tử của mình vào cuối, giống như bạn sẽ làm với

self.str_list = [*self.str_list, other]       
5.

self.str_list = [*self.str_list, other]       
0

Gia hạn

Phương pháp này thêm các yếu tố (lưu ý số nhiều của nó!) Danh sách kết quả là một trong đó có tất cả các yếu tố của cả hai danh sách.

Cú pháp sử dụng phương pháp này là:

Trong trường hợp này

self.str_list = [*self.str_list, other]       
8 là danh sách của chúng tôi và
self.str_list = [*self.str_list, other]       
9 là một đối tượng có thể đi được, chẳng hạn như một danh sách khác. Phương pháp này tương đương với
a = [1, 'x', 2]
a.append('y')

print(a)
0.

self.str_list = [*self.str_list, other]       
1

Chạy mã này dẫn đến kết quả đầu ra sau:

self.str_list = [*self.str_list, other]       
2

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Lưu ý cách hai danh sách được kết hợp với nhau, từng danh sách này.

Trong Python, bạn cũng có thể đạt được kết quả tương tự bằng cách thực hiện một bổ sung đơn giản. Vì vậy,

a = [1, 'x', 2]
a.append('y')

print(a)
1, trong trường hợp này, sẽ dẫn đến cùng một mảng chính xác như tập lệnh của chúng tôi ở trên. Điều này là nhờ phương pháp
a = [1, 'x', 2]
a.append('y')

print(a)
2 đang được triển khai trong danh sách, nhưng đó là phạm vi của bài viết này.

So sánh từng phương pháp

Để xem các kết quả khác nhau thu được thông qua các phương pháp này, hãy so sánh trực tiếp bằng cách chạy mã sau:

Trong chương trình này, chúng tôi đã xác định ba danh sách với các yếu tố chính xác. Chúng tôi cũng đã xác định một danh sách thứ hai mà chúng tôi nối, chèn và mở rộng cho từng danh sách tương tự được xác định trước đó. Kết quả là như sau:Như chúng ta có thể thấy, cả
self.str_list = [*self.str_list, other]       
5 và
self.str_list = [*self.str_list, other]       
7 Thêm danh sách
a = [1, 'x', 2]
a.append('y')

print(a)
5 vào danh sách ban đầu, nhưng dưới dạng một yếu tố duy nhất, là một danh sách. Nói cách khác, nó không nối từng phần tử của
a = [1, 'x', 2]
a.append('y')

print(a)
5 riêng lẻ, mà thay vào đó, nó tiếp nối toàn bộ đối tượng.
Phương pháp
self.str_list = [*self.str_list, other]       
6, mặt khác, thực sự bổ sung các yếu tố riêng lẻ của danh sách
a = [1, 'x', 2]
a.append('y')

print(a)
5, dưới dạng các yếu tố riêng biệt và duy nhất của danh sách kết quả.
Đây là tất cả phù hợp với những gì chúng ta đã thấy trước đây, nghĩa là,
self.str_list = [*self.str_list, other]       
5 và
self.str_list = [*self.str_list, other]       
7 chỉ thêm một yếu tố. Trong khi đó,
self.str_list = [*self.str_list, other]       
6, mở rộng trong danh sách ban đầu bằng cách thêm các yếu tố của danh sách thứ hai ở cuối.
Một sự khác biệt khác để xem xét là thước đo hiệu quả. Đưa ra cách mỗi hoạt động hoạt động, chúng ta có thể dễ dàng tìm ra độ phức tạp về thời gian cho từng phương thức. Hoặc bạn chỉ có thể gian lận và kiểm tra trang phức tạp về thời gian trên trang Wiki của Python.org.Sự phức tạp về thời gian như sau:
Phương phápĐộ phức tạp về thời gian

$ python append.py
[1, 'x', 2, 'y']
2

O (1)

  • $ python append.py
    [1, 'x', 2, 'y']
    
    3
  • Trên)
  • $ python append.py
    [1, 'x', 2, 'y']
    
    4

Được)

Ở đây "N" là số lượng các phần tử hiện tại trong danh sách và "K" là số lượng các phần tử trong đối tượng tham số.

Là += giống như phụ lục?

Trong trường hợp chung, phần phụ sẽ thêm một mục vào danh sách, trong khi += sẽ sao chép tất cả các yếu tố của danh sách bên phải vào danh sách bên trái.append will add one item to the list, while += will copy all elements of right-hand-side list into the left-hand-side list.

Tôi có thể sử dụng += để nối vào liệt kê trong Python không?

Đối với một danh sách, += giống như phương thức mở rộng hơn là phương thức nối.Với một danh sách ở bên trái của toán tử +=, một danh sách khác là cần thiết ở bên phải của toán tử.Tất cả các mục trong danh sách bên phải của toán tử được thêm vào cuối danh sách được tham chiếu đến bên trái của toán tử.+= is more like the extend method than like the append method. With a list to the left of the += operator, another list is needed to the right of the operator. All the items in the list to the right of the operator get added to the end of the list that is referenced to the left of the operator.

Có phải là giống như phụ lục?

"Bàn nối" thêm vào cuối danh sách, "đẩy" thêm vào phía trước..

Là chèn và nối tương tự trong Python?

Sự khác biệt duy nhất giữa append () và chèn () là hàm chèn cho phép chúng tôi thêm một phần tử cụ thể tại một chỉ mục được chỉ định của danh sách không giống như append () trong đó chúng tôi chỉ có thể thêm phần tử ở cuối danh sách.insert function allows us to add a specific element at a specified index of the list unlike append() where we can add the element only at end of the list.