2015-12-17 18 views
6

Tôi mới vào Python, ai đó có thể xin vui lòng cho tôi biết sự khác biệt giữa đầu ra của hai khối các mã:Cắt lát danh sách bằng Python

1.

>> example = [1, 32, 1, 2, 34] 
>> example[4:0] = [122] 
>> example 
[1, 32, 1, 2, 122, 34] 

2.

>> example = [1, 32, 1, 2, 34] 
>> example[4:1] = [122] 
>> example 
[1, 32, 1, 2, 122, 34] 
+0

Tôi khá chắc chắn rằng dòng một và ba của cả hai khối mã không hợp lệ python, trừ khi bạn đã xác định ví dụ là danh sách, v.v ... với ít nhất 123 phần tử. –

+1

Gợi ý: 'Ví dụ [4: 0]' trả về gì? Điều gì về 'ví dụ [4: 1]'? Và 'ví dụ [4: 5]'? Cố gắng hiểu cách thức hoạt động của quá trình cắt đầu tiên, sau đó bạn có thể suy ra lý do tại sao các bài tập của bạn làm điều tương tự. –

+0

Cảm ơn các bạn ... cuối cùng đã hiểu được khái niệm cắt – kanishka

Trả lời

1

Không có gì sai ở đây. Kết quả là như nhau vì dòng duy nhất mà là khác nhau trong hai snipets code đang

example[4:0] = [122] 

example[4:1] = [122] 

Cả hai đều sẽ thêm và gán giá trị 122 (Tôi giả định danh sách các kích thước giá trị một == ở đây) cho phần tử sau đó tại chỉ mục 4. vì số trong đường biên trên của slice nhỏ hơn bốn trong cả hai trường hợp, chúng không có hiệu lực.

5

cắt của bạn đưa ra một danh sách trống tại index 4 vì trên ràng buộc thấp hơn giới hạn thấp hơn:

>>> example[4:0] 
[] 

>>> example[4:1] 
[] 

danh sách trống này được thay thế bằng danh sách của bạn [122]. Hiệu ứng cũng tương tự như khi thực hiện:

>>> example.insert(4, 122) 

Chỉ cần nhớ rằng danh sách trống và danh sách không có gì đặc biệt, mặc dù hiệu ứng chúng có khi bạn sử dụng chúng không rõ ràng ngay từ đầu. Python tutorial có thêm chi tiết.

+1

@ kanishka Điều này có trả lời câu hỏi của bạn không? –

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