2013-04-16 34 views
5

Có an toàn không?Có an toàn khi gán danh sách hiểu cho danh sách gốc không?

x = [1, 2, 3, 4] 
x = [y+5 for y in x] 

Kiểm tra danh sách có đánh giá trước, tạo danh sách mới và sau đó gán danh sách mới đó cho x? Tôi đã từng nói rằng việc thay đổi danh sách trong khi lặp lại nó là một hoạt động không an toàn.

+0

Thay đổi danh sách trong khi lặp lại không giống với việc lặp lại và gán kết quả. –

Trả lời

5

Bạn không thay đổi danh sách trong khi iterating trên nó, bạn đang tạo ra một hoàn toàn mới danh sách và sau đó một khi nó đã được đánh giá, bạn phải ràng buộc nó vào tên x nên mọi thứ đều an toàn.

3

Đúng, an toàn.

Như bạn đã gợi ý, phía bên tay phải được đánh giá trước, sau đó kết quả (danh sách hoàn toàn mới) được gán cho tên x. Bạn nói đúng là không an toàn khi thay đổi danh sách trong khi lặp lại nó, nhưng điều đó không xảy ra trong mẫu mã của bạn, vì vậy đừng lo lắng.

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