0
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Có thể trùng lặp: Sự khác biệt giữa danh sách.Append [1] và list = list + [1] [Python] là gì
What is the difference between LIST.append[1] and LIST = LIST + [1] [Python]
Tôi có một nghi ngờ về cách các tham số được truyền đến các chức năng và khả năng đột biến của chúng, đặc biệt là trong trường hợp danh sách.
Hãy xem xét những điều sau đây ...
def add_list[p]:
p = p + [1]
def append_list[p]:
p.append[1]
p = [1, 2, 3]
add_list[p]
print p
append_list[p]
print p
Đầu ra tôi nhận được là ...
[1, 2, 3]
[1, 2, 3, 1]
Tại sao danh sách ban đầu thay đổi khi tôi nối vào nó trong một hàm, nhưng không thay đổi nếu tôi sử dụng toán tử +?
hỏi ngày 18 tháng 11 năm 2012 lúc 10:05Nov 18, 2012 at 10:05
2
Toán tử gán trong một hàm tạo ra một biến cục bộ mới. Trong hàm * add_list * của bạn là biến cục bộ.
Đã trả lời ngày 18 tháng 11 năm 2012 lúc 10:23Nov 18, 2012 at 10:23
Volcanovolcanovolcano
3.53820 Huy hiệu bạc28 Huy hiệu đồng20 silver badges28 bronze badges
Sử dụng toán tử ‘+, để thêm một phần tử trong danh sách trong Python: việc sử dụng toán tử‘++khiến Python truy cập vào từng phần tử của danh sách đầu tiên đó. Khi ‘+, được sử dụng, một danh sách mới được tạo với không gian cho một yếu tố nữa. Sau đó, tất cả các yếu tố từ danh sách cũ phải được sao chép vào danh sách mới và phần tử mới được thêm vào cuối danh sách này. The use of the ‘+’ operator causes Python to access each element of that first list. When ‘+’ is used a new list is created with space for one more element. Then all the elements from the old list must be copied to the new list and the new element is added at the end of this list.
Example:
sample_list
=
[]
n
=
[1, 2, 3]
[1, 2, 3, 1]
0[1, 2, 3]
[1, 2, 3, 1]
1 [1, 2, 3]
[1, 2, 3, 1]
2[1, 2, 3]
[1, 2, 3, 1]
3 [1, 2, 3]
[1, 2, 3, 1]
4[1, 2, 3]
[1, 2, 3, 1]
5Nó chỉ ra rằng việc thêm một yếu tố vào một danh sách đã có rất hiệu quả trong Python. Trong thực tế, việc thêm một mục mới vào danh sách là hoạt động O [1].
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]3
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- Vì vậy, sự phức tạp tổng thể để nối các yếu tố N là
- Lưu ý: Bằng chứng rằng phương pháp
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9 có độ phức tạp O [1] để thêm phần tử mới được đưa ra bằng phương pháp kế toán để tìm sự phức tạp được khấu hao của phần phụ. - So sánh đồ họa giữa ‘+và và’ phụ lục
Sự khác biệt giữa phụ lục và mở rộng là gì?
Sự khác biệt giữa các phương thức danh sách nối và mở rộng là gì? Phụ lục thêm đối số của nó như một yếu tố duy nhất vào cuối danh sách. Độ dài của danh sách sẽ tăng thêm một. Mở rộng lặp lại trên đối số của nó thêm từng phần tử vào danh sách, mở rộng danh sách.
Sự khác biệt giữa phụ lục và += trong danh sách Python là gì?
Therefore, time complexity=O[
Sử dụng phương thức .Append [], tức là một cách tiếp cận hiệu quả: Phương thức .Append [] trên danh sách thay đổi mã để sử dụng phương thức đột biến để thay đổi danh sách bằng cách chỉ thêm một yếu tố nữa. The .append[] method on lists changes the code to use a mutator method to alter the list by appending just one more element.
Example:
sample_list
=
[]
n
=
[1, 2, 3]
[1, 2, 3, 1]
0[1, 2, 3]
[1, 2, 3, 1]
1 [1, 2, 3]
[1, 2, 3, 1]
2[1, 2, 3]
[1, 2, 3, 1]
3 [1, 2, 3]
[1, 2, 3, 1]
4[1, 2, 3]
[1, 2, 3, 1]
5[1, 2, 3]
[1, 2, 3, 1]
6[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]6
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]3
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Nó chỉ ra rằng việc thêm một yếu tố vào một danh sách đã có rất hiệu quả trong Python. Trong thực tế, việc thêm một mục mới vào danh sách là hoạt động O [1].
Vì vậy, sự phức tạp tổng thể để nối các yếu tố N là
1+.....[n-2] times...+1=O[n]
Lưu ý: Bằng chứng rằng phương pháp [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9 có độ phức tạp O [1] để thêm phần tử mới được đưa ra bằng phương pháp kế toán để tìm sự phức tạp được khấu hao của phần phụ. Proof that
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]9 method has O[1] complexity to add new element is given by the accounting method to find the amortized complexity of append.