Câu trả lời:
append
: Nối đối tượng ở cuối.
x = [1, 2, 3]
x.append([4, 5])
print (x)
mang đến cho bạn: [1, 2, 3, [4, 5]]
extend
: Mở rộng danh sách bằng cách nối thêm các phần tử từ iterable.
x = [1, 2, 3]
x.extend([4, 5])
print (x)
mang đến cho bạn: [1, 2, 3, 4, 5]
x + [4, 5]
cung cấp cho bạn một danh sách mới được gán cho x - làm thay x.extend()
đổi danh sách ban đầu. Tôi giải thích trong câu trả lời của tôi ở đây dưới đây.
x += [4,5]
.
append
là Object . Nếu bạn cố gắng sử dụng extend
và bạn vượt qua trong một từ điển , nó sẽ nối thêm khóa chứ không phải toàn bộ hàm băm vào cuối mảng.
append
thêm một phần tử vào danh sách và extend
nối danh sách đầu tiên với một danh sách khác (hoặc một lần lặp khác, không nhất thiết phải là danh sách.)
>>> li = ['a', 'b', 'mpilgrim', 'z', 'example']
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li.append("new")
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']
>>> li.append(["new", 2])
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new', ['new', 2]]
>>> li.insert(2, "new")
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', ['new', 2]]
>>> li.extend(["two", "elements"])
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', ['new', 2], 'two', 'elements']
Sự khác biệt giữa các phương pháp danh sách nối và mở rộng là gì?
append
thêm đối số của nó dưới dạng một phần tử vào cuối danh sách. Độ dài của danh sách sẽ tăng thêm một.extend
Lặp lại đối số của nó thêm từng phần tử vào danh sách, mở rộng danh sách. Độ dài của danh sách sẽ tăng lên tuy nhiên nhiều yếu tố nằm trong đối số lặp lại.append
Các list.append
phương pháp gắn thêm một đối tượng vào cuối danh sách.
my_list.append(object)
Dù đối tượng là gì, cho dù một số, một chuỗi, một danh sách khác hoặc một cái gì đó khác, nó sẽ được thêm vào cuối của my_list
một mục trong danh sách.
>>> my_list
['foo', 'bar']
>>> my_list.append('baz')
>>> my_list
['foo', 'bar', 'baz']
Vì vậy, hãy nhớ rằng một danh sách là một đối tượng. Nếu bạn thêm một danh sách khác vào danh sách, danh sách đầu tiên sẽ là một đối tượng ở cuối danh sách (có thể không phải là điều bạn muốn):
>>> another_list = [1, 2, 3]
>>> my_list.append(another_list)
>>> my_list
['foo', 'bar', 'baz', [1, 2, 3]]
#^^^^^^^^^--- single item at the end of the list.
extend
Các list.extend
phương pháp mở rộng danh sách bằng cách thêm các yếu tố từ một iterable:
my_list.extend(iterable)
Vì vậy, với phần mở rộng, mỗi phần tử của iterable sẽ được thêm vào danh sách. Ví dụ:
>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.extend(another_list)
>>> my_list
['foo', 'bar', 1, 2, 3]
Hãy nhớ rằng một chuỗi là một lần lặp, vì vậy nếu bạn mở rộng danh sách bằng một chuỗi, bạn sẽ nối thêm từng ký tự khi bạn lặp qua chuỗi (có thể không phải là điều bạn muốn):
>>> my_list.extend('baz')
>>> my_list
['foo', 'bar', 1, 2, 3, 'b', 'a', 'z']
__add__
( +
) và __iadd__
( +=
)Cả hai +
và +=
toán tử được định nghĩa cho list
. Họ là tương tự về mặt ngữ nghĩa để mở rộng.
my_list + another_list
tạo một danh sách thứ ba trong bộ nhớ, vì vậy bạn có thể trả về kết quả của nó, nhưng nó yêu cầu lần lặp thứ hai là một danh sách.
my_list += another_list
sửa đổi danh sách tại chỗ (nó là toán tử tại chỗ và các danh sách là các đối tượng có thể thay đổi, như chúng ta đã thấy) để nó không tạo ra một danh sách mới. Nó cũng hoạt động như mở rộng, trong đó lần lặp thứ hai có thể là bất kỳ loại lặp nào.
Đừng nhầm lẫn - my_list = my_list + another_list
không tương đương với +=
- nó cung cấp cho bạn một danh sách hoàn toàn mới được gán cho my_list.
Nối có độ phức tạp thời gian không đổi , O (1).
Kéo dài có độ phức tạp thời gian, O (k).
Lặp lại qua nhiều lệnh gọi để append
tăng thêm độ phức tạp, làm cho nó tương đương với phần mở rộng và vì việc lặp lại của phần mở rộng được thực hiện trong C, sẽ luôn nhanh hơn nếu bạn có ý định thêm các mục liên tiếp từ một lần lặp vào danh sách.
Bạn có thể tự hỏi những gì là hiệu suất cao hơn, vì phụ lục có thể được sử dụng để đạt được kết quả tương tự như mở rộng. Các chức năng sau đây làm điều tương tự:
def append(alist, iterable):
for item in iterable:
alist.append(item)
def extend(alist, iterable):
alist.extend(iterable)
Vì vậy, hãy dành thời gian cho họ:
import timeit
>>> min(timeit.repeat(lambda: append([], "abcdefghijklmnopqrstuvwxyz")))
2.867846965789795
>>> min(timeit.repeat(lambda: extend([], "abcdefghijklmnopqrstuvwxyz")))
0.8060121536254883
Một bình luận cho biết:
Câu trả lời hoàn hảo, tôi chỉ bỏ lỡ thời điểm so sánh chỉ thêm một yếu tố
Làm điều đúng ngữ nghĩa. Nếu bạn muốn nối tất cả các thành phần trong một lần lặp, hãy sử dụng extend
. Nếu bạn chỉ thêm một yếu tố, hãy sử dụng append
.
Ok, vậy hãy tạo một thử nghiệm để xem cách thức hoạt động của nó kịp thời:
def append_one(a_list, element):
a_list.append(element)
def extend_one(a_list, element):
"""creating a new list is semantically the most direct
way to create an iterable to give to extend"""
a_list.extend([element])
import timeit
Và chúng tôi thấy rằng việc cố gắng tạo ra một vòng lặp chỉ để sử dụng kéo dài là một sự lãng phí thời gian (nhỏ):
>>> min(timeit.repeat(lambda: append_one([], 0)))
0.2082819009956438
>>> min(timeit.repeat(lambda: extend_one([], 0)))
0.2397019260097295
Chúng tôi học được điều này rằng không có gì đạt được từ việc sử dụng extend
khi chúng tôi chỉ có một yếu tố để nối thêm.
Ngoài ra, những thời gian này không quan trọng. Tôi chỉ cho họ thấy rằng, trong Python, làm điều đúng đắn về mặt ngữ nghĩa là thực hiện mọi thứ theo cách đúng đắn ™.
Có thể hình dung rằng bạn có thể kiểm tra thời gian trên hai hoạt động tương đương và nhận được kết quả không rõ ràng hoặc nghịch đảo. Chỉ cần tập trung vào việc làm điều đúng ngữ nghĩa.
Chúng ta thấy rằng extend
là ngữ nghĩa rõ ràng hơn, và rằng nó có thể chạy nhanh hơn nhiều so append
, khi bạn có ý định thêm mỗi phần tử trong một iterable vào một danh sách.
Nếu bạn chỉ có một phần tử duy nhất (không có trong một lần lặp) để thêm vào danh sách, hãy sử dụng append
.
ex1 = 0
và ex2 = [0]
) và vượt qua các biến này, nếu bạn muốn nghiêm ngặt hơn.
l1 += l2
vs l1.extend(l2)
?
l1 += l2
Và l1.extend(l2)
cuối cùng thực thi cùng một mã ( list_extend
hàm trong listobject.c
). Sự khác biệt duy nhất là: 1. +=
gán lại l1
(cho chính nó cho list
s, nhưng việc gán lại hỗ trợ các loại bất biến không cùng một đối tượng sau), điều này làm cho nó bất hợp pháp nếu l1
thực sự là một thuộc tính của một đối tượng bất biến; ví dụ, t = ([],)
, t[0] += lst
sẽ thất bại, trong khi t[0].extend(lst)
sẽ làm việc. 2. l1 += l2
sử dụng mã byte chuyên dụng, trong khi l1.extend(l2)
sử dụng phương thức tổng quát; Điều này làm cho +=
nhanh hơn extend
.
+=
phải gán lại l1
không có nghĩa là trong một số trường hợp, việc gửi chậm hơn extend
được thực hiện một phần hoặc toàn bộ bằng cách không chuyển trở lại phía bên trái. Ví dụ: nếu list
thuộc tính của một đối tượng self.l1 += l2
và self.l1.extend(l2)
có hiệu năng giống hệt nhau trong cài đặt Python 3.6 của tôi, đơn giản là vì hoạt động thực sự giống như vậy self.l1 = self.l1.__iadd__(l2)
, điều đó có nghĩa là nó phải thực hiện một chi phí vừa phải STORE_ATTR
mà self.l1.extend(l2)
không phải.
+=
chỉ là sử dụng STORE_FAST
, giá siêu rẻ), trong đó giá trị được thêm vào là tồn tại list
với một mục trong đó, với hoạt động được lặp lại 1000 lần, +=
trung bình mất khoảng 33 ns , trong khi extend
mất 78 ns, chênh lệch 45 ns. Nếu l1
là toàn cầu (đòi hỏi đắt hơn STORE_GLOBAL
), sự khác biệt thu hẹp đến 17 ns. Nếu l1
thực sự local.l1
(đòi hỏi thậm chí đắt hơn STORE_ATTR
), không có sự khác biệt có ý nghĩa giữa +=
và extend
(thời gian gần giống nhau; extend
đôi khi chiến thắng).
append
nối thêm một yếu tố extend
nối thêm một danh sách các yếu tố
Lưu ý rằng nếu bạn vượt qua một danh sách để chắp thêm, nó vẫn thêm một yếu tố:
>>> a = [1, 2, 3]
>>> a.append([4, 5, 6])
>>> a
[1, 2, 3, [4, 5, 6]]
Với phần bổ sung, bạn có thể nối thêm một phần tử sẽ mở rộng danh sách:
>>> a = [1,2]
>>> a.append(3)
>>> a
[1,2,3]
Nếu bạn muốn mở rộng nhiều hơn một phần tử, bạn nên sử dụng phần mở rộng, bởi vì bạn chỉ có thể nối thêm một phần tử hoặc một danh sách các phần tử:
>>> a.append([4,5])
>>> a
>>> [1,2,3,[4,5]]
Vì vậy, bạn có được một danh sách lồng nhau
Thay vì mở rộng, bạn có thể mở rộng một yếu tố như thế này
>>> a = [1,2]
>>> a.extend([3])
>>> a
[1,2,3]
Hoặc, khác nhau, từ nối thêm, mở rộng nhiều phần tử trong một lần mà không lồng danh sách vào danh sách gốc (đó là lý do của tên mở rộng)
>>> a.extend([4,5,6])
>>> a
[1,2,3,4,5,6]
Cả chắp thêm và mở rộng có thể thêm một yếu tố vào cuối danh sách, mặc dù việc nối thêm đơn giản hơn.
>>> x = [1,2]
>>> x.append(3)
>>> x
[1,2,3]
>>> x = [1,2]
>>> x.extend([3])
>>> x
[1,2,3]
Nếu bạn sử dụng nối thêm nhiều phần tử, bạn phải chuyển danh sách các phần tử làm đối số và bạn sẽ có được danh sách NESTED!
>>> x = [1,2]
>>> x.append([3,4])
>>> x
[1,2,[3,4]]
Với phần mở rộng, thay vào đó, bạn chuyển một danh sách dưới dạng đối số, nhưng bạn sẽ có được một danh sách với phần tử mới không được lồng trong danh sách cũ.
>>> z = [1,2]
>>> z.extend([3,4])
>>> z
[1,2,3,4]
Vì vậy, với nhiều yếu tố hơn, bạn sẽ sử dụng phần mở rộng để có được danh sách có nhiều mục hơn. Tuy nhiên, việc thêm một danh sách sẽ không thêm nhiều phần tử vào danh sách, mà là một phần tử là danh sách lồng nhau như bạn có thể thấy rõ trong đầu ra của mã.
Hai đoạn mã sau tương đương về mặt ngữ nghĩa:
for item in iterator:
a_list.append(item)
và
a_list.extend(iterator)
Cái sau có thể nhanh hơn khi vòng lặp được thực hiện trong C.
extend()
có lẽ preallocates, trong khi append()
có khả năng không.
extend()
không thể phân chia một cách hợp lý vì một số lần lặp không thực hiện __len__()
, nhưng giống như bạn sẽ ngạc nhiên nếu nó không thử. Một số hiệu suất đạt được cũng đến từ việc thực hiện phần lặp trong C thuần thay vì bằng Python, như được chỉ ra trong câu trả lời của Aaron .
Các append()
phương pháp bổ sung thêm một mục duy nhất đến cuối danh sách.
x = [1, 2, 3]
x.append([4, 5])
x.append('abc')
print(x)
# gives you
[1, 2, 3, [4, 5], 'abc']
Các extend()
phương pháp có một đối số, một danh sách, và gắn thêm mỗi mục của các đối số vào danh sách gốc. (Danh sách được triển khai dưới dạng các lớp. Tạo ra một danh sách thực sự bắt đầu một lớp. Như vậy, một danh sách có các phương thức hoạt động trên nó.)
x = [1, 2, 3]
x.extend([4, 5])
x.extend('abc')
print(x)
# gives you
[1, 2, 3, 4, 5, 'a', 'b', 'c']
Từ lặn vào Python .
extend
dưới dạng một danh sách có một phần tử ['abc']
: [1, 2, 3, 4, 5, 'abc']. Để làm cho đầu ra ví dụ của bạn chính xác, thay đổi dòng abc thành : x.extend('abc')
. Và loại bỏ x.extend(6)
hoặc thay đổi nó thành x.extend([6])
.
Bạn có thể sử dụng "+" để trả về gia hạn, thay vì mở rộng tại chỗ.
l1=range(10)
l1+[11]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
l2=range(10,1,-1)
l1+l2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2]
Tương tự như vậy +=
đối với hành vi tại chỗ, nhưng với sự khác biệt nhỏ từ append
& extend
. Một trong những khác biệt lớn nhất của +=
từ append
và extend
là khi nó được sử dụng trong phạm vi chức năng, xem bài viết trên blog này .
append(object)
- Cập nhật danh sách bằng cách thêm một đối tượng vào danh sách.
x = [20]
# List passed to the append(object) method is treated as a single object.
x.append([21, 22, 23])
# Hence the resultant list length will be 2
print(x)
--> [20, [21, 22, 23]]
extend(list)
- Chủ yếu nối hai danh sách.
x = [20]
# The parameter passed to extend(list) method is treated as a list.
# Eventually it is two lists being concatenated.
x.extend([21, 22, 23])
# Here the resultant list's length is 4
print(x)
[20, 21, 22, 23]
extend()
có thể được sử dụng với một đối số lặp. Đây là một ví dụ. Bạn muốn tạo một danh sách ra khỏi danh sách các danh sách theo cách này:
Từ
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
bạn muốn
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Bạn có thể sử dụng itertools.chain.from_iterable()
để làm như vậy. Đầu ra của phương thức này là một trình vòng lặp. Việc thực hiện của nó tương đương với
def from_iterable(iterables):
# chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
for it in iterables:
for element in it:
yield element
Quay lại ví dụ của chúng tôi, chúng tôi có thể làm
import itertools
list2d = [[1,2,3],[4,5,6], [7], [8,9]]
merged = list(itertools.chain.from_iterable(list2d))
và có được danh sách mong muốn.
Đây là cách tương đương extend()
có thể được sử dụng với một đối số lặp:
merged = []
merged.extend(itertools.chain.from_iterable(list2d))
print(merged)
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Đây là tương đương append
và extend
sử dụng +
toán tử:
>>> x = [1,2,3]
>>> x
[1, 2, 3]
>>> x = x + [4,5,6] # Extend
>>> x
[1, 2, 3, 4, 5, 6]
>>> x = x + [[7,8]] # Append
>>> x
[1, 2, 3, 4, 5, 6, [7, 8]]
append () : Về cơ bản, nó được sử dụng trong Python để thêm một phần tử.
Ví dụ 1:
>> a = [1, 2, 3, 4]
>> a.append(5)
>> print(a)
>> a = [1, 2, 3, 4, 5]
Ví dụ 2:
>> a = [1, 2, 3, 4]
>> a.append([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, [5, 6]]
extend () : Trong đó extend (), được sử dụng để hợp nhất hai danh sách hoặc chèn nhiều phần tử vào một danh sách.
Ví dụ 1:
>> a = [1, 2, 3, 4]
>> b = [5, 6, 7, 8]
>> a.extend(b)
>> print(a)
>> a = [1, 2, 3, 4, 5, 6, 7, 8]
Ví dụ 2:
>> a = [1, 2, 3, 4]
>> a.extend([5, 6])
>> print(a)
>> a = [1, 2, 3, 4, 5, 6]
Một điểm thú vị đã được gợi ý, nhưng không được giải thích, đó là mở rộng nhanh hơn so với nối thêm. Đối với bất kỳ vòng lặp nào có phần bổ sung bên trong nên được coi là được thay thế bởi list.extend (process_elements).
Hãy nhớ rằng việc bổ sung các yếu tố mới có thể dẫn đến việc sắp xếp lại toàn bộ danh sách vào một vị trí tốt hơn trong bộ nhớ. Nếu điều này được thực hiện nhiều lần vì chúng tôi đang nối thêm 1 phần tử cùng một lúc, hiệu suất tổng thể bị ảnh hưởng. Theo nghĩa này, list.extend tương tự như "" .join (danh sách chuỗi).
Nối thêm toàn bộ dữ liệu cùng một lúc. Toàn bộ dữ liệu sẽ được thêm vào chỉ mục mới được tạo. Mặt khác extend
, như tên gọi của nó, mở rộng mảng hiện tại.
Ví dụ
list1 = [123, 456, 678]
list2 = [111, 222]
Với append
chúng tôi nhận được:
result = [123, 456, 678, [111, 222]]
Trong khi trên extend
chúng tôi nhận được:
result = [123, 456, 678, 111, 222]
Một từ điển tiếng Anh định nghĩa các từ append
và extend
như:
chắp thêm : thêm (một cái gì đó) vào cuối của một tài liệu bằng văn bản.
mở rộng : làm cho lớn hơn. Phóng to hoặc mở rộng
Với kiến thức đó, bây giờ hãy hiểu
1) Sự khác biệt giữa append
vàextend
append
:
extend
:
list(iterable)
.2) Sự tương đồng giữa append
vàextend
None
.Thí dụ
lis = [1, 2, 3]
# 'extend' is equivalent to this
lis = lis + list(iterable)
# 'append' simply appends its argument as the last element to the list
# as long as the argument is a valid Python object
list.append(object)
Tôi hy vọng tôi có thể bổ sung hữu ích cho câu hỏi này. Ví dụ Info
, nếu danh sách của bạn lưu trữ một đối tượng loại cụ thể, thì đây là tình huống mà extend
phương thức không phù hợp: Trong một for
vòng lặp và tạo một Info
đối tượng mỗi lần và sử dụng extend
để lưu trữ nó vào danh sách của bạn, nó sẽ thất bại. Ngoại lệ như dưới đây:
LoạiError: Đối tượng 'Thông tin' không thể lặp lại
Nhưng nếu bạn sử dụng append
phương pháp, kết quả là OK. Bởi vì mỗi lần sử dụng extend
phương thức, nó sẽ luôn coi nó như một danh sách hoặc bất kỳ loại bộ sưu tập nào khác, lặp lại nó và đặt nó sau danh sách trước đó. Một đối tượng cụ thể không thể được lặp đi lặp lại, rõ ràng.
Để phân biệt chúng bằng trực giác
l1 = ['a', 'b', 'c']
l2 = ['d', 'e', 'f']
l1.append(l2)
l1
['a', 'b', 'c', ['d', 'e', 'f']]
Nó giống như l1
tái tạo một cơ thể bên trong cơ thể cô ấy (lồng nhau).
# Reset l1 = ['a', 'b', 'c']
l1.extend(l2)
l1
['a', 'b', 'c', 'd', 'e', 'f']
Giống như hai cá thể tách biệt kết hôn và xây dựng một gia đình thống nhất.
Bên cạnh đó, tôi tạo ra một bộ quần áo đầy đủ tất cả các phương pháp của danh sách để bạn tham khảo.
list_methods = {'Add': {'extend', 'append', 'insert'},
'Remove': {'pop', 'remove', 'clear'}
'Sort': {'reverse', 'sort'},
'Search': {'count', 'index'},
'Copy': {'copy'},
}
append
"mở rộng" danh sách (tại chỗ) chỉ bằng một mục , đối tượng duy nhất được thông qua (dưới dạng đối số).
extend
"Mở rộng" danh sách (tại chỗ) bằng số lượng mục mà đối tượng được truyền (dưới dạng đối số) chứa.
Điều này có thể hơi khó hiểu cho str
các đối tượng.
append
sẽ thêm một mục chuỗi ở cuối nhưng
extend
sẽ thêm nhiều mục "đơn" 'str' theo chiều dài của chuỗi đó.append
vẫn sẽ thêm một mục 'danh sách' ở cuối và
extend
sẽ thêm bao nhiêu mục 'danh sách' theo độ dài của danh sách đã qua.def append_o(a_list, element): a_list.append(element) print('append:', end = ' ') for item in a_list: print(item, end = ',') print() def extend_o(a_list, element): a_list.extend(element) print('extend:', end = ' ') for item in a_list: print(item, end = ',') print() append_o(['ab'],'cd') extend_o(['ab'],'cd') append_o(['ab'],['cd', 'ef']) extend_o(['ab'],['cd', 'ef']) append_o(['ab'],['cd']) extend_o(['ab'],['cd'])
sản xuất:
append: ab,cd,
extend: ab,c,d,
append: ab,['cd', 'ef'],
extend: ab,cd,ef,
append: ab,['cd'],
extend: ab,cd,
Nối và mở rộng là một trong những cơ chế mở rộng trong python.
Nối thêm: Thêm một phần tử vào cuối danh sách.
my_list = [1,2,3,4]
Để thêm một yếu tố mới vào danh sách, chúng ta có thể sử dụng phương thức chắp thêm theo cách sau.
my_list.append(5)
Vị trí mặc định mà phần tử mới sẽ được thêm vào luôn ở vị trí (độ dài + 1).
Chèn: Phương pháp chèn đã được sử dụng để khắc phục các hạn chế của chắp thêm. Với insert, chúng ta có thể xác định rõ ràng vị trí chính xác mà chúng ta muốn phần tử mới của chúng ta được chèn vào.
Mô tả phương thức chèn (chỉ mục, đối tượng). Phải có hai đối số, đầu tiên là chỉ mục chúng ta muốn chèn phần tử của mình và thứ hai là phần tử.
Example: my_list = [1,2,3,4]
my_list[4, 'a']
my_list
[1,2,3,4,'a']
Mở rộng: Điều này rất hữu ích khi chúng tôi muốn tham gia hai hoặc nhiều danh sách vào một danh sách. Nếu không mở rộng, nếu chúng ta muốn tham gia hai danh sách, đối tượng kết quả sẽ chứa danh sách danh sách.
a = [1,2]
b = [3]
a.append(b)
print (a)
[1,2,[3]]
Nếu chúng ta cố gắng truy cập phần tử ở vị trí 2, chúng ta sẽ nhận được một danh sách ([3]), thay vì phần tử. Để tham gia hai danh sách, chúng tôi sẽ phải sử dụng phụ lục.
a = [1,2]
b = [3]
a.extend(b)
print (a)
[1,2,3]
Để tham gia nhiều danh sách
a = [1]
b = [2]
c = [3]
a.extend(b+c)
print (a)
[1,2,3]
extend
và chỉ đơn giản là sử dụng toán tử cộng - trong ví dụ trên làx = x + [4, 5]
gì?