Hướng dẫn what is the difference between append () and extend () in python? - sự khác biệt giữa append () và expand () trong python là gì?
>>> my_list ['foo', 'bar'] >>> my_list.append('baz') >>> my_list ['foo', 'bar', 'baz'] 1Phương thức 4 nối thêm một đối tượng vào cuối danh sách. Show
Dù đối tượng là gì, cho dù là một số, một chuỗi, một danh sách khác hoặc một cái gì đó khác, nó được thêm vào cuối 5 dưới dạng một mục nhập duy nhất trong danh sách.
Vì vậy, hãy nhớ rằng một danh sách là một đối tượng. Nếu bạn nối một danh sách khác vào danh sách, danh sách đầu tiên sẽ là một đối tượng duy nhất ở cuối danh sách (có thể không phải là điều bạn muốn):
>>> my_list ['foo', 'bar'] >>> my_list.append('baz') >>> my_list ['foo', 'bar', 'baz'] 2Phương pháp 7 mở rộng danh sách bằng cách nối thêm các phần tử từ một điều khác nhau:
Vì vậy, với phần mở rộng, mỗi yếu tố của Iterable được thêm vào danh sách. Ví dụ:
Hãy nhớ rằng một chuỗi là một thứ có thể đi được, vì vậy nếu bạn mở rộng một danh sách với một chuỗi, bạn sẽ thêm từng ký tự khi bạn lặp lại chuỗi (có thể không phải là điều bạn muốn):
Quá tải người vận hành, >>> my_list ['foo', 'bar'] >>> my_list.append('baz') >>> my_list ['foo', 'bar', 'baz'] 8 (>>> my_list ['foo', 'bar'] >>> my_list.append('baz') >>> my_list ['foo', 'bar', 'baz'] 9) và >>> another_list = [1, 2, 3] >>> my_list.append(another_list) >>> my_list ['foo', 'bar', 'baz', [1, 2, 3]] #^^^^^^^^^--- single item at the end of the list. 0 (>>> another_list = [1, 2, 3] >>> my_list.append(another_list) >>> my_list ['foo', 'bar', 'baz', [1, 2, 3]] #^^^^^^^^^--- single item at the end of the list. 1)Cả hai toán tử 9 và 1 đều được xác định cho 4. Chúng giống nhau về mặt ngữ nghĩa với mở rộng. 5 tạo ra một danh sách thứ ba trong bộ nhớ, vì vậy bạn có thể trả về kết quả của nó, nhưng nó yêu cầu rằng có thể đi được thứ hai là một danh sách. 6 sửa đổi danh sách tại chỗ (nó là toán tử tại chỗ và danh sách là các đối tượng có thể thay đổi, như chúng ta đã thấy) để nó không tạo ra một danh sách mới. Nó cũng hoạt động như mở rộng, trong đó thứ hai có thể là bất kỳ loại khác.Đừng nhầm lẫn - 7 không tương đương với 1 - nó cung cấp cho bạn một danh sách hoàn toàn mới được gán cho my_list.Độ phức tạp về thời gianPhụ lục có độ phức tạp thời gian không đổi (khấu hao), O (1). Mở rộng có độ phức tạp về thời gian, O (k). Lặp đi lặp lại thông qua nhiều cuộc gọi đến 1 làm tăng thêm sự phức tạp, làm cho nó tương đương với phần mở rộng và vì lần lặp mở rộng được triển khai trong C, nó sẽ luôn nhanh hơn nếu bạn có ý định nối các mục liên tiếp từ một danh sách có thể sử dụng.Liên quan đến "khấu hao" - từ Danh sách đối tượng Thực hiện Nguồn:
Điều này có nghĩa là chúng tôi nhận được những lợi ích của việc phân bổ bộ nhớ lớn hơn so với việc phân bổ bộ nhớ cần thiết ở phía trước, nhưng chúng tôi có thể trả tiền cho việc phân bổ lại cận biên tiếp theo với một phiên bản thậm chí còn lớn hơn. Tổng thời gian cho tất cả các ứng dụng là tuyến tính tại O (N) và thời gian đó được phân bổ cho mỗi lần phụ, trở thành O (1). Màn biểu diễnBạn có thể tự hỏi những gì là hiệu suất hơn, vì có thể sử dụng thêm để đạt được kết quả tương tự như mở rộng. Các chức năng sau đây làm điều tương tự:
Vì vậy, hãy đến lúc họ:
Giải quyết một nhận xét về thời gianMột người bình luận nói:
Làm điều chính xác về mặt ngữ nghĩa. Nếu bạn muốn nối tất cả các yếu tố trong một điều đó, hãy sử dụng 2. Nếu bạn chỉ thêm một phần tử, hãy sử dụng 1.OK, vì vậy hãy tạo một thử nghiệm để xem cách thức hoạt động của nó đúng lúc:
Và chúng tôi thấy rằng việc đi ra khỏi con đường của chúng tôi để tạo ra một sự khác biệt chỉ để sử dụng mở rộng là một sự lãng phí thời gian (nhỏ): 0Chúng tôi học được từ điều này rằng không có gì đạt được từ việc sử dụng 2 khi chúng tôi chỉ có một yếu tố để nối thêm.Ngoài ra, những thời điểm này không quan trọng. Tôi chỉ cho họ thấy để đưa ra quan điểm rằng, trong Python, làm điều chính xác về mặt ngữ nghĩa là làm mọi thứ đúng cách ™. Có thể hình dung rằng bạn có thể kiểm tra thời gian trên hai hoạt động tương đương và nhận được kết quả mơ hồ hoặc nghịch đảo. Chỉ tập trung vào việc làm điều chính xác về mặt ngữ nghĩa. Sự kết luậnChúng tôi thấy rằng 2 rõ ràng hơn về mặt ngữ nghĩa và nó có thể chạy nhanh hơn nhiều so với 1, khi bạn có ý định nối từng phần tử trong một danh sách.Nếu bạn chỉ có một phần tử duy nhất (không phải trong một điều khác biệt) để thêm vào danh sách, hãy sử dụng 1. |