2011-02-09 31 views
12

Xem xét danh sách >>> l=[1,2,3].Python: Tại sao sử dụng "danh sách [:]" khi "danh sách" đề cập đến cùng một điều?

Lợi ích của việc sử dụng >>> l[:] khi >>> l in giống với điều gì trước đây?

Cảm ơn.

+5

Điều gì khiến bạn nghĩ chúng giống nhau? Bạn đã sử dụng hàm 'id()' để xác nhận? –

+1

Chúng được in cùng một giá trị. Điều đó làm tôi nghĩ vậy. Tôi đã tự hỏi rằng tại sao một người nên lãng phí thời gian để viết thêm các ký tự khi chúng ta có cùng một kết quả mà không có [:]. Không bao giờ biết về 'id()'. Cảm ơn bạn đã chỉ ra điều đó. – Dharmit

+5

@Dharmit: Không sao đâu, đừng sợ! Bạn đang học và rõ ràng để hỏi câu hỏi đó. Đó là một câu hỏi hay. Tất cả chúng ta bắt đầu một nơi nào đó, vì sợ rằng chúng ta quên rằng chúng ta cũng thường hỏi những câu hỏi như thế khi chúng ta học :) – user225312

Trả lời

35

Nó tạo bản sao (nông).

>>> l = [1,2,3] 
>>> m = l[:] 
>>> n = l 
>>> l.append(4) 
>>> m 
[1, 2, 3] 
>>> n 
[1, 2, 3, 4] 
>>> n is l 
True 
>>> m is l 
False 
+5

+1: Chúng không phải là một thứ giống nhau. –

+6

+20 cho một cái gì đó cơ bản này (đã được yêu cầu trước đây, đã được giải thích trong hàng trăm câu hỏi khác sử dụng nó, nằm trong hướng dẫn chính thức và hầu hết những người khác, ...) – delnan

+3

@delnan: Đó là ma thuật của SO ;-) – user225312

12

l[:] được gọi là ký hiệu cắt lát. Nó có thể được sử dụng để trích xuất chỉ một số phần tử trong danh sách, nhưng trong trường hợp này các giới hạn được bỏ qua sao cho toàn bộ danh sách được trả về, nhưng vì slice, đây thực sự là tham chiếu đến một danh sách khác với l các yếu tố tương tự. Kỹ thuật này thường được sử dụng để tạo bản sao nông hoặc bản sao.

http://docs.python.org/tutorial/introduction.html#lists

Các vấn đề liên quan