Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Tôi đang tìm cách chèn danh sách của một danh sách lồng nhau vào danh sách kia theo kiểu xen kẽ. Đây là một ví dụ về những gì tôi đang cố gắng thực hiện

Hầu hết các lời khuyên tôi đã tìm thấy thông qua tìm kiếm đều chỉ ra rằng có thể cần một tập lệnh python để thực hiện việc này. Thật không may, tôi là người mới bắt đầu sử dụng Dynamo và không có kinh nghiệm viết mã

Làm phẳng danh sách các danh sách trong Python đang chuyển đổi danh sách lồng nhau thành danh sách đơn bình thường. Nó có nghĩa là quá trình chuyển đổi danh sách 2D thành danh sách 1D. Ví dụ: chuyển đổi [[1, 2, 3], [‘a’, ‘b’, ‘c’], [1. 1, 3. 0, 7. 4], [True, False]] thành [1, 2, 3, ’a’, ’b’, ’c’, 1. 1, 3. 0, 7. 4, Đúng, Sai]

Thực hiện ví dụ dưới đây

Danh sách là một trong những cấu trúc dữ liệu linh hoạt nhất trong Python. Người ta có thể tạo các đối tượng danh sách đơn hoặc nhiều đối tượng danh sách hoặc các đối tượng danh sách lồng nhau có nghĩa là danh sách 2-D có nghĩa là danh sách bên trong danh sách trong chương trình của họ. Tạo một danh sách lồng nhau rất dễ dàng, nhưng khi một lập trình viên muốn tất cả các danh sách bên trong một danh sách cùng nhau dưới dạng một danh sách duy nhất, họ cần làm phẳng nó

Có nhiều cách để thực hiện thao tác làm phẳng này. Chúng tôi sẽ thảo luận về một số trong số họ trong hướng dẫn này

  1. Danh sách hiểu
  2. Sử dụng hàm sum()
  3. Với toán tử +=
  4. hàm chain()
  5. Funcools – Giảm hoạt động
  6. Vòng lặp lồng nhau – cách tiếp cận lặp đi lặp lại
  7. Numpy – Nối và phẳng
  8. Lambda

Mục lục

Danh sách hiểu

Làm phẳng danh sách các danh sách thành một danh sách thông thường ta có thể sử dụng phương pháp hiểu danh sách. Giống như bên dưới

Mã ví dụ

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinedlist = []
    [joinedlist.extend(list) for list in lists]
    print(joinedlist)
 

Hoặc

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinlist = [x for list in lists for x in list]
    print(joinlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Sử dụng hàm sum()

Hàm sum() sẽ thêm các phần tử danh sách bên trong danh sách và trả về một danh sách duy nhất. Để chuyển danh sách các danh sách thành danh sách đơn, ta sẽ cộng danh sách lồng vào danh sách rỗng để được danh sách thông thường

Mã ví dụ

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinedlist = sum(lists, [])
    print(joinedlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Với += Toán Tử

Trong phần này, chúng ta sẽ sử dụng vòng lặp for để thêm từng phần tử của danh sách lồng nhau vào danh sách trống bằng toán tử +=

Mã ví dụ

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinedlist = []
    for list in lists:
        joinedlist += list
    print(joinedlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

itertools. hàm chain()

Chúng tôi sẽ sử dụng itertools. chain() Hàm làm phẳng các danh sách thành một danh sách duy nhất bằng cách lặp lại các mục danh sách

Mã ví dụ

import itertools

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinedlist = list(itertools.chain(*lists))
    print(joinedlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Funcools – Giảm hoạt động

Ở đây, nó thêm các phần tử của danh sách ban đầu bằng cách giảm hoạt động của mô-đun funcools thành danh sách phẳng

Mã ví dụ

import operator
from functools import reduce

if __name__ == '__main__':
    lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
    joinedlist = reduce(operator.add, lists)
    print(joinedlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Vòng lặp lồng nhau

Sử dụng các vòng lặp lồng nhau, chúng ta có thể nối tất cả các phần tử của danh sách lồng vào trong một danh sách mới. Bằng cách này, chúng ta có thể làm phẳng danh sách các danh sách

Mã ví dụ

lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
joinedlist = []
for i in range(len(lists)): 
  for j in range (len(lists[i])): 
    joinedlist.append(lists[i][j])     
print(joinedlist)

 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Mô-đun Numpy – Nối và phẳng

Thư viện Numpy có nhiều thao tác, một trong số đó là nối. Hoạt động này có thể được sử dụng để làm phẳng danh sách

Mã ví dụ

import numpy
lists = [[1, 2, 3], [True, False], [6.1, 7.3, 8.0], ['a', 'b', 'c']]
joinedlist = list(numpy.concatenate(lists).flat)    
print(joinedlist)
 

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Lambda

Từ khóa lambda được sử dụng để xác định chức năng ẩn danh. Một danh sách sẽ chuyển thành đối số trong hàm và hàm lambda sẽ chuyển đổi chúng từ 2D sang 1D hoặc danh sách gốc thành danh sách phẳng

Mã ví dụ

________số 8

đầu ra

Làm cách nào để hợp nhất danh sách lồng vào một danh sách trong python?

Sự kết luận

Để kết luận, chúng tôi đã thảo luận về cách làm phẳng danh sách các danh sách trong Python. Chúng tôi đã xem quy trình sử dụng tám cách khác nhau với các ví dụ viết mã hoặc chương trình Python của họ để hiểu rõ hơn về quy trình