Hướng dẫn python unpack list of lists - giải nén python danh sách danh sách
Đưa ra một danh sách các danh sách 0, Show
nghĩa là:
nhanh hơn các phím tắt được đăng cho đến nay. ( 0 là danh sách để làm phẳng.)Đây là chức năng tương ứng:
Để làm bằng chứng, bạn có thể sử dụng mô -đun 2 trong thư viện tiêu chuẩn:
Giải thích: Các phím tắt dựa trên 3 (bao gồm cả việc sử dụng ngụ ý trong 4), là sự cần thiết, 5 khi có những người bạn L Tất cả các mục trong kết quả trung gian trước đó phải được sao chép (cũng như một vài mục mới được thêm vào cuối). Vì vậy, để đơn giản và không mất tính tổng quát thực tế, hãy nói rằng bạn có những người bạn t của I của tôi: các mục I đầu tiên được sao chép qua lại L-1 lần, các mục thứ hai I L-2 lần, v.v. Tổng số bản sao là tôi lần tổng x cho x từ 1 đến L được loại trừ, tức là, 6.Danh sách hiểu chỉ tạo ra một danh sách, một lần và sao chép từng mục (từ nơi cư trú ban đầu của nó đến danh sách kết quả) cũng chính xác một lần.
Đã trả lời ngày 4 tháng 6 năm 2009 lúc 20:37Jun 4, 2009 at 20:37
Alex Martellialex MartelliAlex Martelli 828K163 Huy hiệu vàng1204 Huy hiệu bạc1383 Huy hiệu Đồng163 gold badges1204 silver badges1383 bronze badges 9 Bạn có thể sử dụng 7:
Hoặc bạn có thể sử dụng 8 không yêu cầu giải nén danh sách với toán tử 9:
Cách tiếp cận này được cho là dễ đọc hơn 0 và dường như cũng nhanh hơn:
Đã trả lời ngày 4 tháng 6 năm 2009 lúc 21:06Jun 4, 2009 at 21:06
Shawn Chinshawn ChinShawn Chin 81.2K18 Huy hiệu vàng157 Huy hiệu bạc190 Huy hiệu Đồng18 gold badges157 silver badges190 bronze badges 4 Lưu ý từ tác giả: Điều này rất kém hiệu quả. Nhưng vui vẻ, bởi vì monoids là tuyệt vời.: This is very inefficient. But fun, because monoids are awesome.
4 tổng hợp các phần tử của 2 và sử dụng đối số thứ hai làm giá trị ban đầu 3 cho tổng. (Giá trị ban đầu mặc định là 4, không phải là danh sách.)Bởi vì bạn đang tổng hợp các danh sách lồng nhau, bạn thực sự nhận được 5 do kết quả của 6, tương đương với 7.Lưu ý rằng chỉ hoạt động trên danh sách danh sách. Đối với danh sách danh sách danh sách, bạn sẽ cần một giải pháp khác.
Mateen Ulhaq 22.6K16 Huy hiệu vàng86 Huy hiệu bạc128 Huy hiệu đồng16 gold badges86 silver badges128 bronze badges Đã trả lời ngày 4 tháng 6 năm 2009 lúc 20:35Jun 4, 2009 at 20:35
Ngân hàng Kenan BankskenanKenan Banks Huy hiệu vàng 202K3434 gold badges151 silver badges171 bronze badges 5 Tôi đã thử nghiệm hầu hết các giải pháp được đề xuất với perfplot (một dự án thú cưng của tôi, về cơ bản là một trình bao bọc xung quanh 2) và tìm thấy
Là giải pháp nhanh nhất, cả khi nhiều danh sách nhỏ và một vài danh sách dài được nối. ( 9 cũng nhanh như nhau.)Một biến thể đơn giản hơn và cũng có thể chấp nhận được là
Nếu số lượng người con lớn, điều này thực hiện tồi tệ hơn một chút so với đề xuất trên. Mã để tái tạo lô: 0Đã trả lời ngày 26 tháng 7 năm 2017 lúc 9:38Jul 26, 2017 at 9:38
Nico Schlömernico SchlömerNico Schlömer 49.3K25 Huy hiệu vàng186 Huy hiệu bạc229 Huy hiệu đồng25 gold badges186 silver badges229 bronze badges 7 Sử dụng 0, thêm danh sách tích lũy 1 vào danh sách tiếp theo 2: 1Output: 2Cách sử dụng 3 nhanh hơn: 3Output: 2
Mateen Ulhaq 22.6K16 Huy hiệu vàng86 Huy hiệu bạc128 Huy hiệu đồng16 gold badges86 silver badges128 bronze badges Đã trả lời ngày 4 tháng 6 năm 2009 lúc 20:35Jun 4, 2009 at 20:35
Ngân hàng Kenan BankskenanGreg Hewgill Huy hiệu vàng 202K34178 gold badges1133 silver badges1267 bronze badges 2 Tôi đã thử nghiệm hầu hết các giải pháp được đề xuất với perfplot (một dự án thú cưng của tôi, về cơ bản là một trình bao bọc xung quanh 2) và tìm thấynumbers, strings, nested lists and mixed containers. This can flatten both simple and complicated containers (see also Demo).Là giải pháp nhanh nhất, cả khi nhiều danh sách nhỏ và một vài danh sách dài được nối. ( 5Notes:
Mã để tái tạo lô: 6Đã trả lời ngày 26 tháng 7 năm 2017 lúc 9:38
Sử dụng 0, thêm danh sách tích lũy 1 vào danh sách tiếp theo 2:Nov 29, 2016 at 4:14
Cách sử dụng 3 nhanh hơn:pylangGreg Hewgillgreg Hewgill11 gold badges123 silver badges112 bronze badges 7 915K178 Huy hiệu vàng1133 Huy hiệu bạc1267 Huy hiệu đồng 7Dưới đây là một cách tiếp cận chung áp dụng cho các số, chuỗi, danh sách lồng nhau và các thùng chứa hỗn hợp. Điều này có thể làm phẳng cả các thùng chứa đơn giản và phức tạp (xem thêm demo). Mã số 8Trong Python 3, 4 có thể thay thế 5Trong Python 3.8, các lớp cơ sở trừu tượng được chuyển từ 6 sang mô -đun 7.Thử nghiệm 91 Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của thư viện đó
Mateen Ulhaq 22.6K16 Huy hiệu vàng86 Huy hiệu bạc128 Huy hiệu đồng16 gold badges86 silver badges128 bronze badges Đã trả lời ngày 26 tháng 11 năm 2016 lúc 0:20Nov 26, 2016 at 0:20
MSEifertMseifertMSeifert 139K33 Huy hiệu vàng321 Huy hiệu bạc337 Huy hiệu đồng33 gold badges321 silver badges337 bronze badges 0 Điều sau đây có vẻ đơn giản nhất đối với tôi: 0
Francisco 10,4K6 Huy hiệu vàng34 Huy hiệu bạc43 Huy hiệu đồng6 gold badges34 silver badges43 bronze badges Đã trả lời ngày 5 tháng 7 năm 2017 lúc 5:14Jul 5, 2017 at 5:14
1 Xem xét cài đặt gói 6. 1Nó vận chuyển với một triển khai cho 7 (nguồn, từ các công thức nấu ăn của ITERTOOLS): 2Lưu ý: Như đã đề cập trong các tài liệu, 7 yêu cầu một danh sách các danh sách. Xem bên dưới về việc làm phẳng nhiều đầu vào không đều.Kể từ phiên bản 2.4, bạn có thể làm phẳng các phép lặp phức tạp hơn, lồng nhau với 9 (nguồn, được đóng góp bởi Abarnet). 3Đã trả lời ngày 2 tháng 12 năm 2016 lúc 18:35Dec 2, 2016 at 18:35
Pylangpylangpylang 37K11 Huy hiệu vàng123 Huy hiệu bạc112 Huy hiệu đồng11 gold badges123 silver badges112 bronze badges 3 Lý do chức năng của bạn không hoạt động là vì phần mở rộng mở rộng một mảng tại chỗ và không trả lại nó. Bạn vẫn có thể trả lại X từ Lambda, sử dụng một cái gì đó như thế này: 4Lưu ý: Mở rộng hiệu quả hơn + trên danh sách.
Đã trả lời ngày 4 tháng 6 năm 2009 lúc 20:47Jun 4, 2009 at 20:47
Igor Krivokonigor KrivokonIgor Krivokon 10.1k1 Huy hiệu vàng36 Huy hiệu bạc41 Huy hiệu đồng1 gold badge36 silver badges41 bronze badges 2 00 sẽ hoạt động cho các danh sách lồng nhau ngay cả khi chúng làm tổ sâu hơn ví dụ. 5Result: 6Cái này nhanh hơn 18 lần so với dấu gạch dưới ._. Flatten: 7
Francisco 10,4K6 Huy hiệu vàng34 Huy hiệu bạc43 Huy hiệu đồng6 gold badges34 silver badges43 bronze badges Đã trả lời ngày 5 tháng 7 năm 2017 lúc 5:14Feb 1, 2018 at 18:22
EL_DONEL_DONEL_DON Xem xét cài đặt gói 0 Nó vận chuyển với một triển khai cho 7 (nguồn, từ các công thức nấu ăn của ITERTOOLS): 8Lưu ý: Như đã đề cập trong các tài liệu, 7 yêu cầu một danh sách các danh sách. Xem bên dưới về việc làm phẳng nhiều đầu vào không đều.Kể từ phiên bản 2.4, bạn có thể làm phẳng các phép lặp phức tạp hơn, lồng nhau với 9 (nguồn, được đóng góp bởi Abarnet).Đã trả lời ngày 2 tháng 12 năm 2016 lúc 18:35 PylangpylangDec 9, 2021 at 9:15
dtlam26dtlam26dtlam26 37K11 Huy hiệu vàng123 Huy hiệu bạc112 Huy hiệu đồng9 silver badges19 bronze badges 3 Lý do chức năng của bạn không hoạt động là vì phần mở rộng mở rộng một mảng tại chỗ và không trả lại nó. Bạn vẫn có thể trả lại X từ Lambda, sử dụng một cái gì đó như thế này: 0Lưu ý: Mở rộng hiệu quả hơn + trên danh sách.
Đã trả lời ngày 4 tháng 6 năm 2009 lúc 20:47Jul 17, 2016 at 12:57
Igor Krivokonigor Krivokonmdh 10.1k1 Huy hiệu vàng36 Huy hiệu bạc41 Huy hiệu đồng5 gold badges26 silver badges33 bronze badges 0 00 sẽ hoạt động cho các danh sách lồng nhau ngay cả khi chúng làm tổ sâu hơn ví dụ. 1Performance: 2Output:
5Jan 25, 2020 at 21:08
Cái này nhanh hơn 18 lần so với dấu gạch dưới ._. Flatten:kederrac Đã trả lời ngày 1 tháng 2 năm 2018 lúc 18:226 gold badges29 silver badges54 bronze badges 0 1.3761 Huy hiệu vàng17 Huy hiệu bạc33 Huy hiệu đồng 3Theo danh sách của bạn 07 or 08 or use it in a 09 loop.Để mở rộng lợi thế của phương pháp này khi có một tuple hoặc số tồn tại bên trong. Chỉ cần thêm chức năng ánh xạ cho từng phần tử bằng 03 vào danh sách
Đã trả lời ngày 17 tháng 7 năm 2016 lúc 12:57 4
mdhmdhAug 8, 2020 at 14:52
5.0575 Huy hiệu vàng26 Huy hiệu bạc33 Huy hiệu đồngmmj Bạn có thể sử dụng phương pháp 3 Đã trả lời ngày 25 tháng 1 năm 2020 lúc 21:08 5Kederrackederrac
16.4K6 Huy hiệu vàng29 Huy hiệu bạc54 Huy hiệu đồngOct 27, 2016 at 3:24
Có một số câu trả lời với cùng một sơ đồ nối lại đệ quy như dưới đây, nhưng không có câu trả lời nào sử dụng 06, điều này làm cho giải pháp mạnh mẽ và pythonic hơn.mkultraCách sử dụng: Đây là một trình tạo và bạn thường muốn gửi nó trong một trình xây dựng có thể lặp lại như 2 Ưu điểm của giải pháp này là:: Below applies to Python 3.3+ because it uses 12. 13 is also a third-party package, though it is stable. Alternately, you could use 14.Hoạt động với bất kỳ loại khác (thậm chí là tương lai!) hoạt động với bất kỳ sự kết hợp và độ sâu của làm tổ 6Cũng hoạt động nếu cấp cao nhất chứa các mặt hàng trần
Bạn có thể khắc phục điều này như sau: 7Ở đây, bạn kiểm tra xem phần tử phụ (1) có thể sử dụng được với 22, ABC từ 23, nhưng cũng muốn đảm bảo rằng (2) phần tử không giống như "giống như chuỗi".Đã trả lời ngày 1 tháng 2 năm 2018 lúc 18:33Feb 1, 2018 at 18:33
Brad Solomonbrad SolomonBrad Solomon 36K29 Huy hiệu vàng137 Huy hiệu bạc219 Huy hiệu đồng29 gold badges137 silver badges219 bronze badges 1 8Đã trả lời ngày 8 tháng 8 năm 2017 lúc 14:59Aug 8, 2017 at 14:59
Đất menenglealuze 1.40511 Huy hiệu bạc17 Huy hiệu đồng11 silver badges17 bronze badges 1 Tôi muốn một giải pháp có thể xử lý nhiều tổ (ví dụ 24), nhưng cũng sẽ không được đệ quy (tôi đã có một mức độ lớn và tôi bị lỗi đệ quy.Đây là những gì tôi nghĩ ra: 9và các bài kiểm tra: 0Đã trả lời ngày 7 tháng 10 năm 2021 lúc 17:38Oct 7, 2021 at 17:38
Đây có thể không phải là cách hiệu quả nhất, nhưng tôi nghĩ sẽ đặt một lớp một (thực sự là hai lớp). Cả hai phiên bản sẽ hoạt động trên các danh sách lồng phân cấp tùy ý và khai thác các tính năng ngôn ngữ (Python & NBSP; 3.5) và đệ quy. 1Đầu ra là 2Điều này hoạt động theo cách sâu sắc đầu tiên. Việc đệ quy đi xuống cho đến khi tìm thấy một yếu tố không danh sách, sau đó mở rộng biến cục bộ 25 và sau đó quay lại cho cha mẹ. Bất cứ khi nào 25 được trả về, nó được mở rộng cho 25 của cha mẹ trong danh sách hiểu. Do đó, tại gốc, một danh sách phẳng được trả về.Phần trên tạo ra một số danh sách địa phương và trả về chúng được sử dụng để mở rộng danh sách của cha mẹ. Tôi nghĩ rằng cách xung quanh cho điều này có thể là tạo ra một gloab125, như dưới đây. 3Đầu ra một lần nữa 2Mặc dù tôi không chắc chắn vào thời điểm này về hiệu quả.
Đã trả lời ngày 16 tháng 5 năm 2018 lúc 9:41May 16, 2018 at 9:41
Phoxisphoxisphoxis 58K14 Huy hiệu vàng80 Huy hiệu bạc114 Huy hiệu đồng14 gold badges80 silver badges114 bronze badges 1 Một cách tiếp cận khác thường khác hoạt động cho các danh sách các số nguyên không đồng nhất và đồng nhất: 5Đã trả lời ngày 9 tháng 1 năm 2018 lúc 14:34Jan 9, 2018 at 14:34
Tharndttharndttharndt 1273 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges 6 Một chức năng không nhận được để làm phẳng danh sách danh sách của bất kỳ độ sâu nào: 6Đã trả lời ngày 9 tháng 12 năm 2021 lúc 6:10Dec 9, 2021 at 6:10 Không phải là một lớp lót, nhưng nhìn thấy tất cả các câu trả lời ở đây, tôi đoán danh sách dài này đã bỏ lỡ một số mẫu phù hợp, vì vậy đây là :) Hai phương pháp có thể không hiệu quả, nhưng dù sao, nó rất dễ đọc (ít nhất là với tôi; có lẽ tôi bị hỏng bởi lập trình chức năng): 7Phiên bản thứ hai xem xét danh sách danh sách danh sách ... bất kể việc làm tổ: 8
Đã trả lời ngày 14 tháng 3 lúc 13:06Mar 14 at 13:06
Nếu bạn muốn bất thường mọi thứ và giữ một danh sách các yếu tố riêng biệt, bạn cũng có thể sử dụng điều này. 9Đã trả lời ngày 25 tháng 7 lúc 9:26Jul 25 at 9:26
Đối với một danh sách chứa nhiều danh sách ở đây, một giải pháp đệ quy phù hợp với tôi và tôi hy vọng là chính xác: 0Output: 1Đã trả lời ngày 10 tháng 8 lúc 10:05Aug 10 at 10:05
X0-user-0XX0-user-0XX0-user-0X 5994 Huy hiệu bạc18 Huy hiệu đồng4 silver badges18 bronze badges Nếu bạn có một mảng numpy 29: 2produces: 3 30 cũng chấp nhận các tham số khác:
Thông tin chi tiết về các tham số có sẵn ở đây. Đã trả lời ngày 14 tháng 10 lúc 13:19Oct 14 at 13:19
Vasantha Ganeshvasantha GaneshVasantha Ganesh 4.1703 Huy hiệu vàng22 Huy hiệu bạc33 Huy hiệu đồng3 gold badges22 silver badges33 bronze badges Tôi sẽ đề nghị sử dụng các máy phát điện với tuyên bố năng suất và năng suất từ. Đây là một ví dụ:yield statement and yield from. Here's an example: 4Đã trả lời ngày 15 tháng 5 lúc 17:07May 15 at 17:07
VovavovaVova 2.6332 huy hiệu vàng11 Huy hiệu bạc18 Huy hiệu đồng2 gold badges11 silver badges18 bronze badges Nếu tôi muốn thêm một cái gì đó vào câu trả lời tuyệt vời trước đây, thì đây là chức năng 7 đệ quy của tôi có thể làm phẳng không chỉ danh sách lồng nhau, mà còn bất kỳ container nào được đưa ra hoặc bất kỳ đối tượng nào có thể loại bỏ các mục. Điều này cũng hoạt động cho bất kỳ độ sâu nào của việc làm tổ và nó là một trình lặp lười biếng mang lại các vật phẩm theo yêu cầu: 5Bằng cách này, bạn có thể loại trừ các loại bạn không muốn bị san phẳng, như 19 hoặc những gì khác.Ý tưởng là nếu một đối tượng có thể vượt qua 37, nó đã sẵn sàng để mang lại các mục. Vì vậy, có thể có các biểu thức thậm chí có thể có các biểu thức như một mục.Ai đó có thể tranh luận: Tại sao bạn viết điều này chung chung khi OP không yêu cầu nó? OK bạn nói đúng. Tôi chỉ cảm thấy như điều này có thể giúp ai đó (giống như nó đã làm cho bản thân tôi). Trường hợp kiểm tra: 6Output: 7
Đã trả lời ngày 11 tháng 1 lúc 15:56Jan 11 at 15:56
S.BS.BS.B 10,2K7 Huy hiệu vàng19 Huy hiệu bạc41 Huy hiệu đồng7 gold badges19 silver badges41 bronze badges Cách đơn giản nhất để làm trong Python mà không có bất kỳ thư viện nào Chức năng này cũng sẽ hoạt động cho danh sách đa chiều cũng Sử dụng đệ quy Chúng ta có thể đạt được bất kỳ sự kết hợp nào của danh sách bên trong danh sách, chúng ta có thể làm phẳng nó mà không cần sử dụng bất kỳ thư viện nào. 8Đã trả lời ngày 10 tháng 8 lúc 10:50Aug 10 at 10:50
DevildevilDevil 88811 Huy hiệu bạc12 Huy hiệu đồng11 silver badges12 bronze badges Xem xét danh sách chỉ có số nguyên: 9Đã trả lời ngày 2 tháng 4 lúc 15:31Apr 2 at 15:31
BhushandbhushandBhushanD 731 Huy hiệu bạc5 Huy hiệu đồng1 silver badge5 bronze badges Làm cách nào để làm phẳng danh sách các danh sách?Làm phẳng một danh sách các danh sách đòi hỏi phải chuyển đổi danh sách 2D thành danh sách 1D bằng cách không tổ chức mỗi mục danh sách được lưu trữ trong danh sách các danh sách - tức là, chuyển đổi [[1, 2, 3], [4, 5, 6], [7, 8, 9]] vào [1, 2, 3, 4, 5, 6, 7, 8, 9].converting a 2D list into a 1D list by un-nesting each list item stored in the list of lists - i.e., converting [[1, 2, 3], [4, 5, 6], [7, 8, 9]] into [1, 2, 3, 4, 5, 6, 7, 8, 9] .
Làm thế nào để bạn lập một danh sách các danh sách trong một danh sách Python?Có ba cách để làm phẳng danh sách Python:.. Sử dụng danh sách hiểu biết .. Sử dụng một vòng lặp cho vòng lặp .. Sử dụng itertools.Chuỗi () Phương thức .. Làm thế nào để bạn làm phẳng một danh sách bất thường trong Python?Đây là một chức năng đơn giản làm phẳng danh sách độ sâu tùy ý ... Trong tất cả các đề xuất trên trang này, đây là trang duy nhất làm phẳng danh sách này l = ([[chr (i), chr (i-32)] cho i trong xrange (ord ('a'), ord ('z') +1)] + phạm vi (0,9)) trong snap khi tôi thực hiện danh sách này (Flatten (l))..... Điều này cũng làm phẳng từ điển .. Làm thế nào để bạn làm phẳng một danh sách lồng nhau trong Python?Cung cấp hai đối số cho phương thức SUM (): my_list và một danh sách trống (tức là []).sum () kết hợp my_list và [] để tạo một danh sách dẹt.. sum() combines my_list and [ ] to produce a flattened list. |