2013-03-18 33 views
6

Tôi tự hỏi liệu có cách nào trong Python sử dụng .extend, nhưng không thay đổi danh sách gốc. Tôi muốn kết quả trông giống như thế này:Python: list.extend mà không biến đổi biến ban đầu

>> li = [1, 2, 3, 4] 
>> li 
[1, 2, 3, 4] 
>> li.extend([5, 6, 7]) 
[1, 2, 3, 4, 5, 6, 7] 
>> li 
[1, 2, 3, 4] 

Tôi đã cố gắng tìm một vài cách khác nhau nhưng tôi không thể tìm đúng từ để mô tả điều này. Ruby có một cái gì đó như thế này, nơi nếu bạn thực sự muốn thay đổi danh sách ban đầu bạn muốn làm một cái gì đó như: li.extend!([5,6,7]) nếu không nó sẽ chỉ cung cấp cho bạn kết quả mà không cần đột biến bản gốc. Điều này cũng tồn tại trong Python?

Cảm ơn!

+0

Tôi không nghĩ rằng Python cung cấp '! Các tùy chọn 'hay không'! 'như Ruby có trong các phương thức mảng của nó một cách cụ thể. Mặc dù, các câu trả lời dưới đây có các lựa chọn thay thế cho ý thức hệ này. – squiguy

Trả lời

16

Các + nhà điều hành trong Python được quá tải để nối danh sách, vậy làm thế nào về:

>>> li = [1, 2, 3, 4] 
>>> new_list = li + [5, 6, 7] 
>>> new_list 
[1, 2, 3, 4, 5, 6, 7] 
+0

+1 một cách rõ ràng – wim

0

Tôi biết đó là vụng về nhưng nó hoạt động:

a = [1,2,3] 
b = list(a) 
b.extend([4,5]) 
+2

'b = a [:]' có thể được coi là một ý tưởng tốt hơn. –

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