Tôi có một loạt các danh sách tôi muốn nối vào một danh sách duy nhất là danh sách "chính" trong một chương trình tôi đang cố gắng viết. Có cách nào để làm điều này trong một dòng mã hơn là như 10 không? Tôi là người mới bắt đầu nên tôi không biết ...
Để có một bức tranh tốt hơn về câu hỏi của tôi, điều gì sẽ xảy ra nếu tôi có những danh sách sau:
x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9]Và muốn nối các y và z lên x. Thay vì làm:
x.append(y) x.append(z)Có cách nào để làm điều này trong một dòng mã không? Tôi đã thử:
x.append(y, z)Và nó sẽ không hoạt động.
Đã hỏi ngày 3 tháng 1 năm 2013 lúc 0:54Jan 3, 2013 at 0:54
6
x.extend(y+z)
Nên làm những gì bạn muốn
hoặc
x += y+zhoặc thậm chí
x = x+y+zĐã trả lời ngày 3 tháng 1 năm 2013 lúc 0:57Jan 3, 2013 at 0:57
Joran Beasleyjoran BeasleyJoran Beasley
106K12 Huy hiệu vàng148 Huy hiệu bạc174 Huy hiệu đồng12 gold badges148 silver badges174 bronze badges
4
Bạn có thể sử dụng hàm x.append(y) x.append(z) 4 với giá trị bắt đầu (danh sách trống) được chỉ định:
a = sum([x, y, z], [])Điều này đặc biệt phù hợp hơn nếu bạn muốn nối một số lượng danh sách tùy ý.
Đã trả lời ngày 19 tháng 1 năm 2017 lúc 21:59Jan 19, 2017 at 21:59
Seo Seominjoon MinjoonMinjoon Seo
4866 Huy hiệu bạc10 Huy hiệu Đồng6 silver badges10 bronze badges
Mở rộng bình luận của tôi
In [1]: x = [1, 2, 3] In [2]: y = [4, 5, 6] In [3]: z = [7, 8, 9] In [4]: from itertools import chain In [5]: print list(chain(x,y,z)) [1, 2, 3, 4, 5, 6, 7, 8, 9]Đã trả lời ngày 3 tháng 1 năm 2013 lúc 1:09Jan 3, 2013 at 1:09
night-crawlernight-crawlernight-crawler
1.3701 Huy hiệu vàng26 Huy hiệu bạc38 Huy hiệu đồng1 gold badge26 silver badges38 bronze badges
1
Để sao chép chính xác hiệu ứng của phụ lục, hãy thử chức năng sau, đơn giản và hiệu quả:
a=[] def concats (lists): for i in lists: a==a.append(i) concats ([x,y,z]) print(a)Đã trả lời ngày 16 tháng 3 năm 2019 lúc 15:11Mar 16, 2019 at 15:11
jillm_5jillm_5jillm_5
Phim huy hiệu bạc 1711 Huy hiệu đồng1 silver badge6 bronze badges
Nếu bạn thích một cách tiếp cận chức năng hơn một chút, bạn có thể thử:
import functools as f x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] x = f.reduce(lambda x, y: x+y, [y, z], x)Điều này sẽ cho phép bạn kết hợp bất kỳ số lượng danh sách nào vào danh sách x.append(y) x.append(z) 5.
Nếu bạn chỉ muốn kết hợp bất kỳ số lượng danh sách nào với nhau (nghĩa là không vào một danh sách cơ sở), bạn có thể đơn giản hóa để:
x.append(y) x.append(z) 0Hãy lưu ý rằng BFDL của chúng tôi có các đặt phòng của anh ấy liên quan đến Lambdas, giảm và bạn bè: //www.artima.com/weblogs/viewpost.jsp?thread=98196
Để hoàn thành câu trả lời này, bạn có thể đọc thêm về giảm trong tài liệu: //docs.python.org/3/l Library
Tôi trích dẫn: "Áp dụng chức năng của hai đối số tích lũy cho các mục trình tự, từ trái sang phải, để giảm trình tự xuống một giá trị duy nhất."
P.S. //stackoverflow.com/a/33277438/532513 So sánh hiệu suất của các phương pháp khác nhau để kết hợp danh sách.
Đã trả lời ngày 23 tháng 5 năm 2018 lúc 12:00May 23, 2018 at 12:00
Charl bothacharl cả haiCharl Botha
4.20833 Huy hiệu bạc49 Huy hiệu đồng33 silver badges49 bronze badges
2
tương đương với câu trả lời ở trên, nhưng đủ khác nhau để có giá trị được đề cập:
x.append(y) x.append(z) 1Trong biểu thức trên, * rất quan trọng đối với kết quả groking như là chuỗi đối với chuỗi, điều này giống như chuỗi trước (x, y, z). Ngoài ra, lưu ý kết quả được đặt hàng băm.
Đã trả lời ngày 7 tháng 1 năm 2016 lúc 21:48Jan 7, 2016 at 21:48
Msuddermsuddermsudder
4913 Huy hiệu bạc14 Huy hiệu đồng3 silver badges14 bronze badges
Trong một dòng, nó có thể được thực hiện theo những cách sau
x.extend(y+z)hoặc
x.append(y) x.append(z) 3hoặc thậm chíMay 28, 2018 at 4:05
wingman__7wingman__7wingman__7
Đã trả lời ngày 3 tháng 1 năm 2013 lúc 0:5713 silver badges17 bronze badges