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
- Danh sách hiểu
- Sử dụng hàm sum[]
- Với toán tử +=
- hàm chain[]
- Funcools – Giảm hoạt động
- Vòng lặp lồng nhau – cách tiếp cận lặp đi lặp lại
- Numpy – Nối và phẳng
- 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
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
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
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
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
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
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
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
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