Hướng dẫn merge list of lists into one list python - hợp nhất danh sách các danh sách thành một danh sách python

Đối với độ phẳng một cấp, nếu bạn quan tâm đến tốc độ, điều này nhanh hơn bất kỳ câu trả lời nào trước đây trong mọi điều kiện tôi đã thử. . bằng Slice (là bản sao khối cấp thấp hơn bất kỳ phương thức Iterator nào):

def join(a):
    """Joins a sequence of sequences into a single sequence.  (One-level flattening.)
    E.g., join([(1,2,3), [4, 5], [6, (7, 8, 9), 10]]) = [1,2,3,4,5,6,(7,8,9),10]
    This is very efficient, especially when the subsequences are long.
    """
    n = sum([len(b) for b in a])
    l = [None]*n
    i = 0
    for b in a:
        j = i+len(b)
        l[i:j] = b
        i = j
    return l

Danh sách thời gian sắp xếp với nhận xét:

[(0.5391559600830078, 'flatten4b'), # join() above. 
(0.5400412082672119, 'flatten4c'), # Same, with sum(len(b) for b in a) 
(0.5419249534606934, 'flatten4a'), # Similar, using zip() 
(0.7351131439208984, 'flatten1b'), # list(itertools.chain.from_iterable(a)) 
(0.7472689151763916, 'flatten1'), # list(itertools.chain(*a)) 
(1.5468521118164062, 'flatten3'), # [i for j in a for i in j] 
(26.696547985076904, 'flatten2')] # sum(a, [])


Trong Python, một danh sách là một chuỗi được đặt hàng có thể chứa một số loại đối tượng như số nguyên, ký tự hoặc float.

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tham gia danh sách các danh sách (danh sách lồng nhau) bằng Python. Bây giờ chúng ta thấy 4 phương pháp để hoàn thành nhiệm vụ này -

  • Sử dụng Nested for Loop

  • Sử dụng danh sách hiểu

  • Sử dụng hàm sum ()

  • Sử dụng mô -đun Numpy

Giả sử chúng tôi đã lấy một danh sách các danh sách chứa một số yếu tố. Chúng tôi sẽ tham gia các danh sách đó và trả về kết quả bằng các phương thức khác nhau như được chỉ định ở trên.

Phương pháp 1: Sử dụng Nested for Loop

Thuật toán (bước)

  • Tạo một biến để lưu trữ danh sách đầu vào của danh sách (danh sách lồng nhau).

  • Tạo một danh sách trống mới để lưu trữ danh sách kết quả

  • Sử dụng vòng lặp For, để đi qua cho đến khi độ dài của danh sách đầu vào của danh sách sử dụng hàm Len () (số lượng mục trong một đối tượng được trả về bằng phương thức Len ()) len() function(The number of items in an object is returned by the len() method)

  • Lấy một vòng khác cho vòng lặp đi qua từng yếu tố của danh sách lồng nhau

  • Sử dụng hàm append () (thêm phần tử vào danh sách ở cuối) để thêm phần tử này vào danh sách kết quả.append() function(adds the element to the list at the end) to add this element to the result list.

  • In danh sách kết quả sau khi tham gia danh sách đầu vào của danh sách.

Thí dụ

Chương trình sau trả về danh sách sau khi tham gia danh sách đầu vào của danh sách bằng cách sử dụng Nested for Loop -

input_nestedlist = [[1, 3],[2, 6, 7],[9, 5, 12, 7]] print(input_nestedlist) resultList = [] for m in range(len(input_nestedlist)): for n in range (len(input_nestedlist[m])): resultList.append(input_nestedlist[m][n]) print("Resultant list after joining the list of lists = ", resultList)

Đầu ra

Khi thực hiện, chương trình trên sẽ tạo ra đầu ra sau -

[[1, 3], [2, 6, 7], [9, 5, 12, 7]]
Resultant list after joining the list of lists = [1, 3, 2, 6, 7, 9, 5, 12, 7]

Phương pháp 2: Danh sách hiểu biết

Thuật toán (bước)

Tạo một biến để lưu trữ danh sách đầu vào của danh sách (danh sách lồng nhau).

  • Tạo một biến để lưu trữ danh sách đầu vào của danh sách (danh sách lồng nhau).

  • Tạo một danh sách trống mới để lưu trữ danh sách kết quảlist comprehension to create a new list by joining all the elements of the nested list

When you want to create a new list based on the values of an existing list, list comprehension provides a concise syntax.
  • In danh sách kết quả sau khi tham gia danh sách đầu vào của danh sách.

Sử dụng vòng lặp For, để đi qua cho đến khi độ dài của danh sách đầu vào của danh sách sử dụng hàm Len () (số lượng mục trong một đối tượng được trả về bằng phương thức Len ())

Lấy một vòng khác cho vòng lặp đi qua từng yếu tố của danh sách lồng nhau

input_list = [["tutorialspoint", "python"], [2, 6, 7], [9, 5, 12, 7]] print(input_list) resultList = [element for nestedlist in input_list for element in nestedlist] print("Resultant list after joining list of lists = ", resultList)

Đầu ra

Khi thực hiện, chương trình trên sẽ tạo ra đầu ra sau -

[['tutorialspoint', 'python'], [2, 6, 7], [9, 5, 12, 7]]
Resultant list after joining list of lists = ['tutorialspoint', 'python', 2, 6, 7, 9, 5, 12, 7]

Phương pháp 2: Danh sách hiểu biết

Thuật toán (bước)

Tạo một biến để lưu trữ danh sách đầu vào của danh sách (danh sách lồng nhau).

  • Tạo một danh sách trống mới để lưu trữ danh sách kết quảsum() function to concatenate nested lists to a single list by passing an empty list as a second argument to it.

Sử dụng vòng lặp For, để đi qua cho đến khi độ dài của danh sách đầu vào của danh sách sử dụng hàm Len () (số lượng mục trong một đối tượng được trả về bằng phương thức Len ())

Lấy một vòng khác cho vòng lặp đi qua từng yếu tố của danh sách lồng nhau

sum(iterable, start)

Sử dụng hàm append () (thêm phần tử vào danh sách ở cuối) để thêm phần tử này vào danh sách kết quả.

In danh sách kết quả sau khi tham gia danh sách đầu vào của danh sách.− any sequence like list, tuple etc

Chương trình sau trả về danh sách sau khi tham gia danh sách đầu vào của danh sách bằng cách sử dụng Nested for Loop -− A value appended/added to the return value

  • In danh sách kết quả sau khi tham gia danh sách đầu vào của danh sách.

Thí dụ

Khi thực hiện, chương trình trên sẽ tạo ra đầu ra sau -

input_listoflists = [["tutorialspoint", "python"], [2, 6, 7],[9, 5]] print(input_listoflists) resultList = sum(input_listoflists, []) print("Resultant list after joining the list of lists:
"
, resultList)

Đầu ra

[['tutorialspoint', 'python'], [2, 6, 7], [9, 5]]
Resultant list after joining the list of lists:
['tutorialspoint', 'python', 2, 6, 7, 9, 5]

Phương pháp 4: Sử dụng mô -đun Numpy

Thư viện Numpy bao gồm các chức năng để kết hợp chuỗi con và làm phẳng chúng vào một danh sách 1 chiều duy nhất.

Thuật toán (bước)

Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -

  • Sử dụng từ khóa nhập, để nhập mô -đun Numpy

  • Tham gia danh sách các danh sách bằng cách sử dụng hàm Concatenate () và làm phẳng chúng vào danh sách 1 chiều bằng cách sử dụng chức năng thuộc tính phẳng và danh sách () (chuyển đổi thành danh sách) tương ứng concatenate() function and flatten them into a 1-Dimensional list using the flat attribute and list() function(converts into a list) respectively

  • In danh sách kết quả sau khi tham gia danh sách đầu vào của danh sách.

Thí dụ

Chương trình sau trả về danh sách sau khi tham gia danh sách đầu vào của danh sách bằng mô -đun Numpy -

[(0.5391559600830078, 'flatten4b'), # join() above. 
(0.5400412082672119, 'flatten4c'), # Same, with sum(len(b) for b in a) 
(0.5419249534606934, 'flatten4a'), # Similar, using zip() 
(0.7351131439208984, 'flatten1b'), # list(itertools.chain.from_iterable(a)) 
(0.7472689151763916, 'flatten1'), # list(itertools.chain(*a)) 
(1.5468521118164062, 'flatten3'), # [i for j in a for i in j] 
(26.696547985076904, 'flatten2')] # sum(a, [])
0

Đầu ra

[(0.5391559600830078, 'flatten4b'), # join() above. 
(0.5400412082672119, 'flatten4c'), # Same, with sum(len(b) for b in a) 
(0.5419249534606934, 'flatten4a'), # Similar, using zip() 
(0.7351131439208984, 'flatten1b'), # list(itertools.chain.from_iterable(a)) 
(0.7472689151763916, 'flatten1'), # list(itertools.chain(*a)) 
(1.5468521118164062, 'flatten3'), # [i for j in a for i in j] 
(26.696547985076904, 'flatten2')] # sum(a, [])
1

Sự kết luận

Chúng tôi đã học cách tham gia/kết hợp danh sách các danh sách vào danh sách 1 chiều bằng bốn phương pháp khác nhau, bao gồm cho các vòng lặp, danh sách hiểu, hàm numpy và hàm sum (), từ bài viết này. Chúng tôi cũng đã học được những gì xảy ra khi chúng tôi vượt qua danh sách danh sách lồng nhau với một danh sách trống để sum ().

Hướng dẫn merge list of lists into one list python - hợp nhất danh sách các danh sách thành một danh sách python

Cập nhật vào ngày 19 tháng 9 năm 2022 10:38:44

  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để tham gia hai danh sách trong C#?
  • Python - Chuyển đổi danh sách danh sách thành danh sách các bộ
  • Chuyển đổi danh sách thành danh sách danh sách trong Python
  • Làm thế nào để có được độ dài của một danh sách các danh sách trong Python?
  • Chương trình Java tham gia hai danh sách
  • Làm thế nào để tham gia hoặc kết hợp hai danh sách trong C#?
  • Làm thế nào để nối danh sách vào danh sách thứ hai (danh sách concatenate) trong Python?
  • Python - Các cách để lặp lại danh sách danh sách Tuple
  • Làm thế nào để tạo một danh sách phẳng trong danh sách các danh sách trong Python?
  • Phép nhân tùy chỉnh trong danh sách danh sách trong Python
  • Python - Xóa cột khỏi danh sách
  • Python - Cột chuyển đổi thành các phần tử riêng biệt trong danh sách
  • Tìm các yếu tố phổ biến trong danh sách các danh sách trong Python
  • Python - Tham gia các yếu tố Tuple trong danh sách
  • Chương trình Java tham gia hai danh sách nhất định trong Java

Làm cách nào để kết hợp nhiều danh sách thành một python?

Sử dụng toán tử '+' Đây là cách đơn giản nhất để hợp nhất hai danh sách trong Python.Toán tử '+' là một toán tử đa năng, có thể được sử dụng để tính toán số học, cũng như cho mục đích hợp nhất, cho chuỗi, danh sách, v.v. This is the simplest way to merge two lists in Python. '+' operator is a multipurpose operator, which can be used for arithmetic calculations, as well as for merging purposes, for strings, lists, etc.

Làm thế nào để bạn kết hợp 3 danh sách trong Python?

Sử dụng phương thức python itertools.chain () để kết hợp nhiều danh sách với nhau.Các itertools.Phương thức chuỗi () chấp nhận dữ liệu của các vòng lặp khác nhau như danh sách, chuỗi, bộ dữ liệu, v.v. và cung cấp một chuỗi các phần tử tuyến tính từ chúng.Hàm này hoạt động không phân biệt loại dữ liệu của dữ liệu đầu vào. chain() method to concatenate multiple lists together. The itertools. chain() method accepts data of different iterables such as lists, string, tuples, etc and provides a linear sequence of elements out of them. This function works irrespective of the data type of the input data.

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] .