Làm cách nào để nối hai danh sách trong Python?


2530

Làm cách nào để nối hai danh sách trong Python?

Thí dụ:

listone = [1, 2, 3]
listtwo = [4, 5, 6]

Kết quả dự kiến:

>>> joinedlist
[1, 2, 3, 4, 5, 6]

6
Bạn có muốn chỉ đơn giản là nối thêm , hoặc bạn muốn hợp nhất hai danh sách theo thứ tự được sắp xếp ? Sản lượng nào bạn mong đợi cho [1,3,6] và [2,4,5]? Chúng tôi có thể giả sử cả hai danh sách con đã được sắp xếp (như trong ví dụ của bạn) không?
smci

1
... Còn điều gì xảy ra nếu danh sách có trùng lặp, ví dụ [1,2,5] and [2,4,5,6]? Bạn có muốn các bản sao được bao gồm, loại trừ hoặc không quan tâm?
smci

Câu trả lời:


3903

Bạn có thể sử dụng +toán tử để kết hợp chúng:

listone = [1,2,3]
listtwo = [4,5,6]

joinedlist = listone + listtwo

Đầu ra:

>>> joinedlist
[1,2,3,4,5,6]

110
điều này có tạo ra một bản sao sâu của listone và nối thêm listtwo không?
Daniel F

152
@Daniel nó sẽ tạo một danh sách mới với một bản sao nông của các mục trong danh sách đầu tiên, theo sau là một bản sao nông của các mục trong danh sách thứ hai. Sử dụng copy.deepcopy để có được bản sao sâu của danh sách.
Daniel G

219
một chi tiết hữu ích khác ở đây: listone += listtwokết quả tronglistone == [1, 2, 3, 4, 5, 6]
rickcnagy

16
@ br1ckb0t điều đó sẽ thay đổi những gì listone đang chỉ vào? Vậy: list3 = listone listone+=listtwo list3 có thay đổi không?
MikeH

11
nó không thay đổi list3. Tuy nhiên, nếu đó không phải là vấn đề, thì việc thêm hai danh sách sẽ dễ đọc hơn thay vì tạo một danh sách mới.
rickcnagy

318

Cũng có thể tạo một trình tạo chỉ đơn giản lặp lại các mục trong cả hai danh sách bằng cách sử dụng itertools.chain(). Điều này cho phép bạn kết hợp các danh sách chuỗi (hoặc bất kỳ lần lặp lại nào) để xử lý mà không cần sao chép các mục vào danh sách mới:

import itertools
for item in itertools.chain(listone, listtwo):
    # Do something with each list item

4
chainở phía chậm hơn (nhưng không nhiều) cho hai danh sách, nhưng là giải pháp nhanh nhất để xâu chuỗi nhiều danh sách (n >> 2).
cs95

@ cs95 chậm so với cái gì?
Moberg

@Moberg So với các cách khác để liệt kê danh sách, để tham khảo vui lòng xem điểm chuẩn của tôi ở đây .
cs95

264

Python >= 3.5thay thế:[*l1, *l2]

Một lựa chọn khác đã được giới thiệu thông qua sự chấp nhận PEP 448mà đáng được đề cập.

PEP, có tiêu đề Tổng quát hóa giải nén bổ sung , thường giảm một số hạn chế cú pháp khi sử dụng *biểu thức được gắn dấu sao trong Python; với nó, việc tham gia hai danh sách (áp dụng cho bất kỳ lần lặp nào) giờ đây cũng có thể được thực hiện với:

>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> joined_list = [*l1, *l2]  # unpack both iterables in a list literal
>>> print(joined_list)
[1, 2, 3, 4, 5, 6]

Chức năng này được xác định cho Python,3.5 nó chưa được nhập vào các phiên bản trước trong 3.xgia đình. Trong các phiên bản không được hỗ trợ, SyntaxErrornó sẽ được nâng lên.

Cũng như các cách tiếp cận khác, điều này cũng tạo ra bản sao nông của các yếu tố trong danh sách tương ứng.


Các lộn ngược để phương pháp này là bạn thực sự làm danh sách không cần để thực hiện nó, bất cứ điều gì đó là iterable sẽ làm. Như đã nêu trong PEP:

Điều này cũng hữu ích như một cách dễ dàng hơn để tổng hợp các lần lặp vào một danh sách, chẳng hạn như my_list + list(my_tuple) + list(my_range)bây giờ tương đương với chỉ [*my_list, *my_tuple, *my_range].

Vì vậy, trong khi bổ sung +sẽ tăng một loại TypeErrordo không phù hợp:

l = [1, 2, 3]
r = range(4, 7)
res = l + r

Sau đây sẽ không:

res = [*l, *r]

bởi vì trước tiên nó sẽ giải nén nội dung của các iterables và sau đó chỉ cần tạo một listtừ nội dung.


1
Một ví dụ hay về cách tiếp cận giải nén hoạt động trên các kiểu lặp là các hàm trả về một trình vòng lặp qua một trong các danh sách bạn đang nối. Ví dụ: bạn có thể đảo ngược một trong những danh sách bạn đang nối : res = [*l1, *reversed(l2)]. Vì reversedtrả về một iterator, res = l1 + reversed(l2)sẽ đưa ra một lỗi.
alan

2
Điều đáng chú ý là điều này tương tự với việc kết hợp từ điển trong python. dict3 = {** dict1, ** dict2}. Lưu ý rằng chúng tôi sử dụng ** để giải nén từ điển trong khi với danh sách chúng tôi sử dụng * để giải nén.
Kevin S

212

Bạn có thể sử dụng các bộ để có được danh sách hợp nhất các giá trị duy nhất

mergedlist = list(set(listone + listtwo))

45
Tuy nhiên, đúng, nó cũng sẽ xóa các bản sao, nếu đó là điều bạn quan tâm. Danh sách bổ sung sẽ không làm điều đó.
metadaarous

1
Cách để làm điều đó và giữ thông tin đặt hàng là gì?
Natim

11
Tốt hơnlistone + [x for x in listtwo if x not in listone]
Natim

8
+1 IMHO đây là cách chính xác để "hợp nhất" danh sách (union) trong khi câu trả lời "được phê duyệt" mô tả cách kết hợp / thêm danh sách (multiset)
alfasin

2
Nếu bạn quan tâm đến việc duy trì thứ tự đầu vào, sau đó import collections; mergedlist = list(collections.OrderedDict.fromkeys(listone + listtwo))sẽ thực hiện các mẹo.
SethMMorton

185

Bạn cũng có thể sử dụng list.extend()phương thức để thêm listphần cuối vào phần khác:

listone = [1,2,3]
listtwo = [4,5,6]

listone.extend(listtwo)

Nếu bạn muốn giữ nguyên danh sách gốc, bạn có thể tạo một listđối tượng mới và extendcả hai danh sách cho nó:

mergedlist = []
mergedlist.extend(listone)
mergedlist.extend(listtwo)

80

Làm cách nào để nối hai danh sách trong Python?

Kể từ 3.7, đây là những phương pháp stdlib phổ biến nhất để ghép hai danh sách (hoặc nhiều hơn) trong python.

nhập mô tả hình ảnh ở đây

Chú thích

  1. Đây là một giải pháp khéo léo vì sự cô đọng của nó. Nhưng sumthực hiện nối ghép theo kiểu cặp đôi, có nghĩa đây là thao tác bậc hai vì bộ nhớ phải được phân bổ cho mỗi bước. KHÔNG SỬ DỤNG nếu danh sách của bạn lớn.

  2. Xem chainchain.from_iterable từ các tài liệu. Bạn sẽ cần import itertoolsđầu tiên. Sự kết hợp là tuyến tính trong bộ nhớ, vì vậy đây là điểm tốt nhất về hiệu năng và khả năng tương thích phiên bản. chain.from_iterableđược giới thiệu vào 2.6.

  3. Phương pháp này sử dụng Tổng quát hóa giải nén bổ sung (PEP 448) , nhưng không thể khái quát hóa thành danh sách N trừ khi bạn tự giải nén từng cái một.

  4. a += ba.extend(b)ít nhiều tương đương cho tất cả các mục đích thực tế. +=khi được gọi trong danh sách sẽ gọi nội bộ list.__iadd__, mở rộng danh sách đầu tiên bằng danh sách thứ hai.


Hiệu suất

Ghép nối 2 danh sách 1

nhập mô tả hình ảnh ở đây

Không có nhiều sự khác biệt giữa các phương thức này nhưng điều đó có nghĩa là tất cả chúng đều có cùng một thứ tự phức tạp (tuyến tính). Không có lý do đặc biệt nào để thích cái này hơn cái kia ngoại trừ vấn đề phong cách.

N-List concatenation

nhập mô tả hình ảnh ở đây

Các ô đã được tạo bằng mô-đun perfplot . Mã, để bạn tham khảo.

1. iadd( +=) và extendcác phương thức hoạt động tại chỗ, do đó, một bản sao phải được tạo ra mỗi lần trước khi thử nghiệm. Để giữ mọi thứ công bằng, tất cả các phương pháp đều có bước sao chép trước cho danh sách bên trái có thể bỏ qua.


Nhận xét về các giải pháp khác

  • KHÔNG SỬ DỤNG PHƯƠNG PHÁP DUNDER list.__add__trực tiếp dưới bất kỳ hình thức, hình dạng hoặc hình thức nào. Trong thực tế, tránh xa các phương thức dunder, và sử dụng các toán tử và các operatorchức năng như chúng được thiết kế cho. Python có ngữ nghĩa cẩn thận được đưa vào những thứ phức tạp hơn là chỉ gọi trực tiếp. Đây là một ví dụ . Vì vậy, để tóm tắt, a.__add__(b)=> BAD; a + b=> TỐT.

  • Một số câu trả lời ở đây cung cấp reduce(operator.add, [a, b])cho ghép nối đôi - điều này giống như sum([a, b], [])chỉ nhiều từ.

  • Bất kỳ phương pháp sử dụng setsẽ giảm trùng lặp và mất thứ tự. Sử dụng cẩn thận.

  • for i in b: a.append(i)dài dòng hơn và chậm hơn a.extend(b), đó là chức năng gọi đơn và thành ngữ nhiều hơn. appendchậm hơn vì ngữ nghĩa mà bộ nhớ được phân bổ và phát triển cho các danh sách. Xem ở đây để thảo luận tương tự.

  • heapq.mergesẽ hoạt động, nhưng trường hợp sử dụng của nó là để hợp nhất các danh sách được sắp xếp theo thời gian tuyến tính. Sử dụng nó trong bất kỳ tình huống nào khác là một mô hình chống.

  • yielding liệt kê các phần tử từ một hàm là một phương thức có thể chấp nhận, nhưng chainthực hiện việc này nhanh hơn và tốt hơn (nó có đường dẫn mã trong C, vì vậy nó rất nhanh).

  • operator.add(a, b)là một chức năng có thể chấp nhận tương đương với a + b. Đó là trường hợp sử dụng chủ yếu cho công văn phương pháp động. Mặt khác, thích a + bcái nào ngắn hơn và dễ đọc hơn, theo ý kiến ​​của tôi . YMMV.


các câu trả lời cho stackoverflow.com/q/36863404/125507 có thể sử dụng một âm mưu perfplot (bao gồm cả giải pháp numba)
endolith

@endolith bit bị ngập trong công việc nhưng tôi sẽ xem và xem liệu tôi có thể gắn chip không. Ty.
cs95

Phương pháp nào tốt nhất sau đó thực hiện khôn ngoan, nhanh hơn? xin vui lòng cho biết.
ganeshdeshmukh

@ganeshdeshmukh TL; DR đều tốt và cái nào bạn chọn chủ yếu là về phong cách. "There's not much difference between these methods but that makes sense given they all have the same order of complexity (linear). There's no particular reason to prefer one over the other except as a matter of style."Các giải pháp không được liệt kê trong câu trả lời của tôi hoặc bị phê bình trong" Nhận xét "Tôi khuyên bạn không nên sử dụng.
cs95

78

Điều này khá đơn giản và tôi nghĩ nó thậm chí còn được hiển thị trong hướng dẫn :

>>> listone = [1,2,3]
>>> listtwo = [4,5,6]
>>>
>>> listone + listtwo
[1, 2, 3, 4, 5, 6]

51

Câu hỏi này trực tiếp hỏi về việc tham gia hai danh sách. Tuy nhiên, nó khá cao trong tìm kiếm ngay cả khi bạn đang tìm cách tham gia nhiều danh sách (bao gồm cả trường hợp khi bạn tham gia danh sách không).

Tôi nghĩ rằng lựa chọn tốt nhất là sử dụng danh sách hiểu:

>>> a = [[1,2,3], [4,5,6], [7,8,9]]
>>> [x for xs in a for x in xs]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Bạn cũng có thể tạo máy phát điện:

>>> map(str, (x for xs in a for x in xs))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

Câu trả lời cũ

Xem xét cách tiếp cận chung chung hơn này:

a = [[1,2,3], [4,5,6], [7,8,9]]
reduce(lambda c, x: c + x, a, [])

Sẽ xuất:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Lưu ý, điều này cũng hoạt động chính xác khi a[]hoặc [[1,2,3]].

Tuy nhiên, điều này có thể được thực hiện hiệu quả hơn với itertools:

a = [[1,2,3], [4,5,6], [7,8,9]]
list(itertools.chain(*a))

Nếu bạn không cần list, nhưng chỉ cần lặp đi lặp lại, bỏ qua list().

Cập nhật

Đề xuất thay thế của Patrick Collins trong các ý kiến ​​cũng có thể làm việc cho bạn:

sum(a, [])

3
Lưu ý về Python 3: reducehiện đã có functoolsnên bạn cần nhập trước.
Dimitris Fasarakis Hilliard

41

Bạn chỉ có thể sử dụng toán tử +hoặc +=toán tử như sau:

a = [1, 2, 3]
b = [4, 5, 6]

c = a + b

Hoặc là:

c = []
a = [1, 2, 3]
b = [4, 5, 6]

c += (a + b)

Ngoài ra, nếu bạn muốn các giá trị trong danh sách được hợp nhất là duy nhất, bạn có thể thực hiện:

c = list(set(a + b))

Phần cuối cùng có thể tùy ý sắp xếp lại các mục. Nếu bạn muốn giữ gìn trật tự, trên CPython 3.6+ bạn có thể làmlist(dict.fromkeys(a + b))
Boris

27

Cần lưu ý rằng itertools.chainhàm chấp nhận số lượng đối số biến:

>>> l1 = ['a']; l2 = ['b', 'c']; l3 = ['d', 'e', 'f']
>>> [i for i in itertools.chain(l1, l2)]
['a', 'b', 'c']
>>> [i for i in itertools.chain(l1, l2, l3)]
['a', 'b', 'c', 'd', 'e', 'f']

Nếu một iterable (tuple, list, tạo, v.v.) là đầu vào, from_iterablephương thức lớp có thể được sử dụng:

>>> il = [['a'], ['b', 'c'], ['d', 'e', 'f']]
>>> [i for i in itertools.chain.from_iterable(il)]
['a', 'b', 'c', 'd', 'e', 'f']

22

Với Python 3.3+, bạn có thể sử dụng sản lượng từ :

listone = [1,2,3]
listtwo = [4,5,6]

def merge(l1, l2):
    yield from l1
    yield from l2

>>> list(merge(listone, listtwo))
[1, 2, 3, 4, 5, 6]

Hoặc, nếu bạn muốn hỗ trợ một số lượng vòng lặp tùy ý:

def merge(*iters):
    for it in iters:
        yield from it

>>> list(merge(listone, listtwo, 'abcd', [20, 21, 22]))
[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd', 20, 21, 22]

Bạn có thể sử dụng itertools.chain(tương đương) thay vì xác định chức năng của riêng bạn.
Boris

18

Nếu bạn muốn hợp nhất hai danh sách ở dạng đã sắp xếp, bạn có thể sử dụng mergehàm từ heapqthư viện.

from heapq import merge

a = [1, 2, 4]
b = [2, 4, 6, 7]

print list(merge(a, b))

15

Nếu bạn không thể sử dụng toán tử cộng ( +), bạn có thể sử dụng operatornhập:

import operator

listone = [1,2,3]
listtwo = [4,5,6]

result = operator.add(listone, listtwo)
print(result)

>>> [1, 2, 3, 4, 5, 6]

Ngoài ra, bạn cũng có thể sử dụng chức năng __add__ dunder :

listone = [1,2,3]
listtwo = [4,5,6]

result = list.__add__(listone, listtwo)
print(result)

>>> [1, 2, 3, 4, 5, 6]

3
lấy dunders thường không phải là cách tiếp cận tốt nhất. Nếu +là ra khỏi bàn, sử dụng operator.add.
Dimitris Fasarakis Hilliard

2
Tại sao toán tử cộng không có sẵn?
cs01

2
Thông thường sẽ không :) nhưng nếu bạn đang thực hiện nối danh sách với chức năng bản đồ hoặc muốn lưu trữ chức năng thêm vào một biến, bạn không thể sử dụng +.
jpihl

13

Như một cách tổng quát hơn cho các danh sách hơn bạn có thể đặt chúng trong một danh sách và sử dụng itertools.chain.from_iterable()1 chức năng mà dựa trên này câu trả lời là cách tốt nhất cho bằng phẳng một danh sách lồng nhau:

>>> l=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> import itertools
>>> list(itertools.chain.from_iterable(l))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

1. Lưu ý rằng chain.from_iterable()có sẵn trong Python 2.6 trở lên. Trong các phiên bản khác, sử dụng chain(*l).


10

Nếu bạn cần hợp nhất hai danh sách được sắp xếp với các quy tắc sắp xếp phức tạp, bạn có thể phải tự cuộn nó như trong đoạn mã sau (sử dụng quy tắc sắp xếp đơn giản để dễ đọc :-)).

list1 = [1,2,5]
list2 = [2,3,4]
newlist = []

while list1 and list2:
    if list1[0] == list2[0]:
        newlist.append(list1.pop(0))
        list2.pop(0)
    elif list1[0] < list2[0]:
        newlist.append(list1.pop(0))
    else:
        newlist.append(list2.pop(0))

if list1:
    newlist.extend(list1)
if list2:
    newlist.extend(list2)

assert(newlist == [1, 2, 3, 4, 5])

Hoặc chỉ sử dụng heapq.merge.
cs95

7

Bạn có thể sử dụng append()phương thức được xác định trên listcác đối tượng:

mergedlist =[]
for elem in listone:
    mergedlist.append(elem)
for elem in listtwo:
    mergedlist.append(elem)

9
chỉ để bạn biết, nếu đây là những gì bạn đang làm trong thực tế, thì điều này chậm hơn rất nhiều so với các phương pháp được đề xuất khác. xem stackoverflow.com/questions/17479361/ từ
Ryan Hained

7
list(set(listone) | set(listtwo))

Đoạn mã trên, không bảo toàn thứ tự, loại bỏ trùng lặp khỏi mỗi danh sách (nhưng không phải từ danh sách được nối)


6

Như đã được chỉ ra bởi nhiều người, itertools.chain()là cách để đi nếu một người cần áp dụng chính xác cùng một điều trị cho cả hai danh sách. Trong trường hợp của tôi, tôi có một nhãn và một cờ khác với danh sách này, vì vậy tôi cần một cái gì đó phức tạp hơn một chút. Hóa ra, đằng sau hậu trường itertools.chain()chỉ đơn giản là làm như sau:

for it in iterables:
    for element in it:
        yield element

(xem https://docs.python.org/2/l Library / itemools.html ), vì vậy tôi đã lấy cảm hứng từ đây và viết một cái gì đó dọc theo những dòng này:

for iterable, header, flag in ( (newList, 'New', ''), (modList, 'Modified', '-f')):
    print header + ':'
    for path in iterable:
        [...]
        command = 'cp -r' if os.path.isdir(srcPath) else 'cp'
        print >> SCRIPT , command, flag, srcPath, mergedDirPath
        [...]

Những điểm chính cần hiểu ở đây là các danh sách chỉ là một trường hợp đặc biệt của iterable, là các đối tượng như bất kỳ đối tượng nào khác; và for ... incác vòng lặp trong python có thể hoạt động với các biến tuple, vì vậy thật đơn giản để lặp trên nhiều biến cùng một lúc.


5

Sử dụng một danh sách hiểu đơn giản:

joined_list = [item for list_ in [list_one, list_two] for item in list_]

Nó có tất cả các ưu điểm của cách tiếp cận mới nhất là sử dụng Tổng quát hóa giải nén bổ sung - tức là bạn có thể ghép một số lượng lặp khác nhau tùy ý (ví dụ: danh sách, bộ dữ liệu, phạm vi và trình tạo) theo cách đó - và nó không bị giới hạn trong Python 3.5 trở lên .


4

Một cách thực sự ngắn gọn để kết hợp một danh sách các danh sách là

list_of_lists = [[1,2,3], [4,5,6], [7,8,9]]
reduce(list.__add__, list_of_lists)

mang lại cho chúng ta

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Xin vui lòng không sử dụng list.__add__, sử dụng operator.addthay thế. Đây là tương đương nhiều từ sum(list_of_lists, [])mà cũng tệ như vậy. KHÔNG ĐƯỢC DÙNG!
cs95

@ cs95 bạn có thể giải thích vấn đề bằng cách sử dụng danh sách .__ add__
Akash Singh

phương thức dunder là "phương thức riêng" và thường không nên được sử dụng trực tiếp (chúng được gọi bởi các hàm khác). Ngoại lệ là obj.__class__obj.__dict__.
cs95

3

Trong Python, bạn có thể nối hai mảng có kích thước tương thích với lệnh này

numpy.concatenate([a,b])

4
Câu hỏi không yêu cầu numpy.
cs95

2

Vì vậy, có hai cách dễ dàng.

  1. Sử dụng+ : Nó tạo ra một danh sách mới từ danh sách được cung cấp

Thí dụ:

In [1]: a = [1, 2, 3]

In [2]: b = [4, 5, 6]

In [3]: a + b
Out[3]: [1, 2, 3, 4, 5, 6]

In [4]: %timeit a + b
10000000 loops, best of 3: 126 ns per loop
  1. Sử dụng phần mở rộng : Nó nối thêm danh sách mới vào danh sách hiện có. Điều đó có nghĩa là nó không tạo ra một danh sách riêng.

Thí dụ:

In [1]: a = [1, 2, 3]

In [2]: b = [4, 5, 6]

In [3]: %timeit a.extend(b)
10000000 loops, best of 3: 91.1 ns per loop

Vì vậy, chúng tôi thấy rằng trong số hai phương pháp phổ biến nhất, extendlà hiệu quả.


2
Nếu tôi cần thêm nhiều danh sách, như a + b + c + d + e thì sao?
Tweakimp

2
@Tweakimp Xem câu trả lời này có một vài lựa chọn (tôi khuyên bạn nên chain.from_iterable).
cs95

2

Có nhiều cách để ghép các danh sách trong python.

l1 = [1,2,3,4]
l2 = [3,4,5,6]

 1. new_list = l1.copy()
    new_list = new_list.extend(l2)
 2. new_list = l1 + l2
 3. new_list = [*l1, *l2]

1
Bạn có thể vui lòng giải thích những thông tin mới mà câu trả lời này cung cấp hơn những thông tin khác không?
cs95

Có nhiều cách để ghép các danh sách trong python - tất cả đều được đề cập rộng rãi trong các câu trả lời cũ hơn nhiều. Những thông tin mới nào cung cấp ??
Tomerikoo

-1
import itertools

A = list(zip([1,3,5,7,9],[2,4,6,8,10]))
B = [1,3,5,7,9]+[2,4,6,8,10]
C = list(set([1,3,5,7,9] + [2,4,6,8,10]))

D = [1,3,5,7,9]
D.append([2,4,6,8,10])

E = [1,3,5,7,9]
E.extend([2,4,6,8,10])

F = []
for a in itertools.chain([1,3,5,7,9], [2,4,6,8,10]):
    F.append(a)


print ("A: " + str(A))
print ("B: " + str(B))
print ("C: " + str(C))
print ("D: " + str(D))
print ("E: " + str(E))
print ("F: " + str(F))

Đầu ra:

A: [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
B: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
C: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
D: [1, 3, 5, 7, 9, [2, 4, 6, 8, 10]]
E: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
F: [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

-1

Nếu bạn muốn có một danh sách mới trong khi vẫn giữ hai danh sách cũ:

def concatenate_list(listOne, listTwo):
    joinedList = []
    for i in listOne:
        joinedList.append(i)
    for j in listTwo:
        joinedList.append(j)

    sorted(joinedList)

    return joinedList

Làm thế nào khác với câu trả lời này của mingxiao?
Tomerikoo

-2
lst1 = [1,2]

lst2 = [3,4]

def list_combinationer(Bushisms, are_funny):

    for item in lst1:
        lst2.append(item)
        lst1n2 = sorted(lst2)
        print lst1n2

list_combinationer(lst1, lst2)

[1,2,3,4]

4
Vâng, xin vui lòng làm một số lời giải thích
U10-Chuyển tiếp

Điểm của các đối số của hàm là gì nếu bạn đang sử dụng tên toàn cầu bên trong nó?
Tomerikoo

-2

Bạn có thể làm theo mã

listone = [1, 2, 3]
listtwo = [4, 5, 6]

for i in listone:
    listtwo.append(i)
print(listtwo)

[1,2,3,4,5,6]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.