Cách khởi tạo danh sách lồng nhau trong python

Danh sách lồng nhau là biểu diễn Python của mảng hai chiều. Chúng được sử dụng để đại diện cho danh sách các danh sách. Ví dụ: danh sách danh sách tạp hóa trong tháng hoặc ma trận chúng ta có thể nhân. Trong bài đăng này, chúng tôi sẽ giới thiệu cách sử dụng Python để tạo và thao tác với các danh sách lồng nhau

chúng ta sẽ đi qua

  • Danh sách lồng nhau của Python
  • Danh sách hiểu với danh sách lồng nhau
  • Thêm danh sách vào mảng hai chiều
  • Đặt hai danh sách thứ nguyên lại với nhau trong Python
  • Cách đảo ngược danh sách lồng nhau
  • Đảo ngược các phần tử phụ của danh sách lồng nhau
  • Đảo ngược các phần tử phụ và phần tử của mảng Python 2D
  • Biến Danh sách 2D thành Danh sách Bình thường
  • Đảo ngược danh sách lồng nhau phẳng
  • Tóm tắt Danh sách Python trong Danh sách

Cách dễ nhất để tạo danh sách lồng nhau trong Python đơn giản là tạo danh sách và đặt một hoặc nhiều danh sách vào danh sách đó. Trong ví dụ dưới đây, chúng tôi sẽ tạo hai danh sách lồng nhau. Đầu tiên, chúng ta sẽ tạo một danh sách lồng nhau bằng cách đặt một danh sách trống bên trong một danh sách khác. Sau đó, chúng ta sẽ tạo một danh sách lồng nhau khác bằng cách đặt hai danh sách không trống bên trong một danh sách, được phân tách bằng dấu phẩy như chúng ta làm với các phần tử danh sách thông thường

# create a nested list
nlist1 = [[]]
nlist2 = [[1,2],[3,4,5]]

Hiểu danh sách với Danh sách lồng nhau trong Python

Chúng tôi cũng có thể tạo danh sách lồng nhau với khả năng hiểu danh sách. Hiểu danh sách là một cách để tạo danh sách từ các danh sách khác. Trong ví dụ bên dưới, chúng tôi sẽ tạo hai danh sách với khả năng hiểu danh sách theo hai cách

Trước tiên, chúng tôi sẽ tạo một danh sách lồng nhau bằng ba cách hiểu danh sách riêng biệt. Thứ hai, chúng tôi sẽ tạo một danh sách lồng nhau với khả năng hiểu danh sách lồng nhau

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]

Kết quả của hai danh sách phải là.  

  • >>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
    >>> x[1][1].append['a']
    >>> x
    [[[], [], []], [[], ['a'], []], [[], [], []]]
    
    4
  • >>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
    >>> x[1][1].append['a']
    >>> x
    [[[], [], []], [[], ['a'], []], [[], [], []]]
    
    5

Thêm danh sách vào mảng hai chiều

Bây giờ chúng ta đã học cách tạo danh sách lồng nhau trong Python, hãy xem cách thêm danh sách vào chúng. Chúng tôi làm việc với danh sách lồng nhau giống như cách chúng tôi làm việc với danh sách thông thường. Chúng ta có thể thêm một phần tử vào danh sách lồng nhau bằng hàm

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
6. Trong ví dụ của chúng tôi, chúng tôi tạo một danh sách và nối nó vào một trong các danh sách hiện có của chúng tôi ở trên

# append a list
list1 = [8, 7, 6]
nlist_comp1.append[list1]
print[nlist_comp1]

Điều này sẽ dẫn đến danh sách này

  • >>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
    >>> x[1][1].append['a']
    >>> x
    [[[], [], []], [[], ['a'], []], [[], [], []]]
    
    7

Nối các danh sách hai chiều trong Python

Ngoài việc thêm một danh sách vào danh sách 2D của chúng tôi, chúng tôi cũng có thể thêm hoặc nối hai danh sách lồng nhau với nhau. Nối danh sách trong Python khá đơn giản, tất cả những gì chúng ta cần làm là cộng chúng với dấu cộng. Cách thêm danh sách lồng nhau hoạt động giống như cách thêm danh sách đơn giản, không lồng nhau. Trong ví dụ của chúng tôi, chúng tôi sẽ thêm hai danh sách mà chúng tôi đã tạo bằng cách sử dụng tính năng hiểu danh sách cùng nhau

# concat nested lists
concat_nlist = nlist_comp1 + nlist_comp2
print[concat_nlist]

Danh sách chúng ta sẽ thấy từ đây là

  • >>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
    >>> x[1][1].append['a']
    >>> x
    [[[], [], []], [[], ['a'], []], [[], [], []]]
    
    8

Cách đảo ngược danh sách lồng nhau trong Python

Bây giờ chúng ta đã tạo, thêm vào và nối các danh sách lồng nhau, hãy đảo ngược chúng. Có nhiều cách để đảo ngược danh sách lồng nhau, bao gồm tạo bản sao đảo ngược hoặc sử dụng tính năng hiểu danh sách. Tuy nhiên, trong ví dụ này, chúng tôi sẽ đảo ngược một danh sách tại chỗ bằng cách sử dụng chức năng

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
9 tích hợp.  

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
0

Điều này sẽ in ra danh sách lồng nhau

  • # create a list with list comprehension
    nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
    nlist_comp2 = [[i for i in range[n]] for n in range[3]]
    print[nlist_comp1]
    print[nlist_comp2]
    10

Đảo ngược các phần tử phụ của danh sách lồng nhau

Được rồi, vì vậy chúng ta có thể dễ dàng đảo ngược danh sách bằng cách sử dụng hàm

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
11. Nếu chúng ta muốn đảo ngược các phần tử con của danh sách lồng nhau thì sao?

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
0

Nếu chúng ta gọi đoạn mã trên trong danh sách nối ban đầu, chúng ta sẽ thấy danh sách này

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
13

Đảo ngược các phần tử phụ và các phần tử của mảng Python 2D

Bây giờ chúng ta có thể đảo ngược các phần tử trong danh sách 2D cũng như đảo ngược các phần tử của từng danh sách lồng nhau, chúng ta có thể ghép chúng lại với nhau. Để đảo ngược các phần tử con và các phần tử của danh sách 2D trong Python, tất cả những gì chúng ta làm là lặp qua từng danh sách bên trong và đảo ngược chúng, sau đó đảo ngược danh sách bên ngoài sau vòng lặp. Chúng ta cũng có thể làm theo thứ tự ngược lại

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
1

Chạy cái này trên

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
14 gốc sẽ cho

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
15

Biến Danh sách 2D thành Danh sách Bình thường

Cho đến nay, chúng ta đã học cách tạo, thêm và kết hợp với nhau và đảo ngược danh sách hai chiều trong Python. Bây giờ, hãy xem chuyển danh sách 2D đó thành danh sách bình thường hoặc phẳng. Trong ví dụ này, chúng tôi sẽ sử dụng khả năng hiểu danh sách để trích xuất từng phần tử từ mỗi danh sách con trong danh sách

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
2

Khi chạy đoạn mã trên để làm phẳng một danh sách trên các danh sách được nối ban đầu, chúng ta sẽ nhận được danh sách này

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
16

Đảo ngược danh sách lồng nhau phẳng Python

Hãy tập hợp tất cả lại với nhau. Chúng tôi vừa làm phẳng mảng Python 2D của mình thành danh sách một chiều. Trước đó, chúng tôi đã đảo ngược danh sách 2D của mình. Bây giờ, hãy đảo ngược danh sách phẳng của chúng ta. Giống như với danh sách 2D, tất cả những gì chúng ta phải làm để đảo ngược danh sách đã làm phẳng của mình là chạy hàm

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
11 trên danh sách đã làm phẳng

>>> x = [ [[] for i in range[wid]] for i in range[hgt] ]
>>> x[1][1].append['a']
>>> x
[[[], [], []], [[], ['a'], []], [[], [], []]]
3

Sau khi chạy chức năng đảo ngược trên danh sách chúng tôi đã làm phẳng ở trên, chúng tôi sẽ nhận được

# create a list with list comprehension
nlist_comp1 = [[i for i in range[5]], [i for i in range[7]], [i for i in range[3]]]
nlist_comp2 = [[i for i in range[n]] for n in range[3]]
print[nlist_comp1]
print[nlist_comp2]
18

Tóm tắt các danh sách lồng nhau trong Python

Trong bài đăng này về danh sách lồng nhau trong Python, chúng ta đã học cách tạo, thao tác và làm phẳng danh sách lồng nhau. Đầu tiên chúng ta học cách tạo danh sách lồng nhau đơn giản bằng cách đặt danh sách vào danh sách, sau đó chúng ta học cách tạo danh sách lồng nhau thông qua việc hiểu danh sách.  

Tiếp theo, chúng ta đã học cách thực hiện một số thao tác với mảng 2D trong Python. Đầu tiên, cách nối thêm một danh sách, sau đó là cách nối hai danh sách và cuối cùng là cách đảo ngược chúng. Cuối cùng, chúng ta đã học cách làm phẳng danh sách 2D và đảo ngược nó

Đọc thêm

  • Phép nhân ma trận Python thuần túy
  • Thuật toán Prims trong Python
  • Xây dựng trình tóm tắt văn bản AI của riêng bạn bằng Python
  • Nhận dạng thực thể được đặt tên [NER] với spaCy, NLTK và API Web
  • Thuật toán Dijkstra trong Python

Tìm hiểu thêm

Để tìm hiểu thêm, vui lòng liên hệ với tôi @yujian_tang trên Twitter, kết nối với tôi trên LinkedIn và tham gia Discord của chúng tôi. Hãy nhớ theo dõi blog để luôn cập nhật các dự án Python thú vị và các cách để nâng cao kỹ năng Phần mềm và Python của bạn. Nếu bạn thích bài viết này, vui lòng Tweet nó, chia sẻ nó trên LinkedIn hoặc nói với bạn bè của bạn

Tôi điều hành trang web này để giúp bạn và những người khác giống như bạn tìm các dự án thú vị và thực hành các kỹ năng phần mềm. Nếu điều này hữu ích cho bạn và bạn thích trang web không có quảng cáo của mình, vui lòng giúp tài trợ cho trang web này bằng cách quyên góp bên dưới. Nếu bạn không thể quyên góp ngay bây giờ, xin hãy nghĩ đến chúng tôi vào lần sau

Tôi bắt đầu sự nghiệp phần mềm chuyên nghiệp của mình khi thực tập cho IBM ở trường trung học sau khi vô địch ACSL hai năm liên tiếp. Tôi đã học về AI/ML ở trường đại học, nơi tôi đã xuất bản bài báo đầu tiên của tác giả cho Dữ liệu lớn của IEEE. Sau khi tốt nghiệp đại học, tôi đã làm việc trên cơ sở hạ tầng AutoML tại Amazon trước khi rời đi để làm việc trong các công ty khởi nghiệp. Tôi tin rằng tôi tạo ra nội dung phần mềm chất lượng cao nhất nên đó là những gì tôi đang làm bây giờ. Thả bình luận để cho tôi biết

Chủ Đề