Python làm phẳng danh sách các danh sách

Làm phẳng danh sách đề cập đến quá trình xóa thứ nguyên khỏi danh sách. Thứ nguyên đề cập đến một tọa độ bổ sung cần thiết để định vị một mục trong danh sách. Bạn có thể làm phẳng danh sách Python bằng cách sử dụng khả năng hiểu danh sách, vòng lặp for lồng nhau hoặc itertools. phương thức chuỗi []

Danh sách Python có thể chứa nhiều thứ nguyên. Điều này có nghĩa là bạn có một danh sách trong danh sách. Những danh sách này, đôi khi được gọi là 'danh sách lồng nhau', có thể được chuyển đổi lại thành danh sách thông thường

Tìm trận đấu Bootcamp của bạn

  • Career Karma kết hợp bạn với các bootcamp công nghệ hàng đầu
  • Truy cập học bổng độc quyền và các khóa học chuẩn bị
Chọn sở thích của bạn
Tên đầu tiên

Họ

E-mail

Số điện thoại


Bằng cách tiếp tục, bạn đồng ý với Điều khoản dịch vụ và Chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận các ưu đãi và cơ hội từ Career Karma qua điện thoại, tin nhắn văn bản và email

Điều này có nghĩa là bạn có thể di chuyển tất cả các giá trị từ các danh sách trong một danh sách sang một danh sách. Biến một danh sách các danh sách thành một danh sách được gọi là “làm phẳng một danh sách. ”

Python làm phẳng danh sách

Có ba cách để làm phẳng danh sách Python

  • Sử dụng hiểu danh sách
  • Sử dụng vòng lặp for lồng nhau
  • Sử dụng itertools. phương thức chuỗi []

Trong hướng dẫn này, chúng tôi nói về cách làm phẳng danh sách bằng cách sử dụng khả năng hiểu danh sách, vòng lặp for và itertools. phương thức chuỗi []. Chúng tôi đi qua hai ví dụ để bạn có thể bắt đầu làm phẳng danh sách trong các chương trình của riêng mình

con trăn. Làm phẳng danh sách bằng cách sử dụng hiểu danh sách

Khả năng hiểu danh sách Python xác định danh sách dựa trên nội dung của danh sách hiện có. Bạn có thể tùy chỉnh từng thành phần đi vào danh sách mới của mình bằng cách chỉ định các điều kiện hoặc thay đổi trong phần hiểu

Khả năng hiểu là đường cú pháp để sử dụng vòng lặp for để lặp qua danh sách và tạo danh sách mới. Điều này có nghĩa là chúng hoạt động theo cách cơ bản giống như vòng lặp for nhưng sử dụng cú pháp khác nhau

Đây là cú pháp để hiểu danh sách

numbers = [1, 2, 3]

new_numbers = [number * 2 for number in numbers]

Sự hiểu biết này nhân mỗi số trong danh sách “số” của chúng tôi với 2

Làm phẳng danh sách. Liệt kê ví dụ hiểu

Chúng tôi có một danh sách các danh sách chứa các loại nhân bánh sandwich khác nhau có sẵn tại một nhà hàng. Hiện tại, danh sách danh sách của chúng tôi trông như thế này

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

Danh sách đầu tiên chứa nhân bánh sandwich thuần chay;

» THÊM.   Lỗi loại Python. chỉ có thể nối danh sách [không phải “int”] vào danh sách Giải pháp

Chúng tôi muốn thay đổi danh sách này thành một danh sách các loại thực phẩm. Dễ dàng làm việc với danh sách có một chiều hơn là hai chiều. Không cần phải có nhiều hơn một thứ nguyên trong danh sách này. Để xóa thứ nguyên thứ hai khỏi danh sách của chúng tôi, chúng tôi có thể sử dụng khả năng hiểu danh sách

new_foods = [food for sublist in foods for food in sublist]
print[new_foods]

Việc hiểu danh sách này lặp lại trên mọi danh sách trong biến Python “thực phẩm”. Mỗi giá trị sau đó được thêm vào danh sách chính. Khi danh sách của chúng tôi được tạo, chúng tôi sẽ in nó ra bàn điều khiển

Hãy mã của chúng tôi và xem những gì sẽ xảy ra

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

Danh sách danh sách của chúng tôi đã được chuyển đổi thành công thành danh sách phẳng. Tất cả các thành phần hiện xuất hiện trong một danh sách thay vì ba

con trăn. Làm phẳng danh sách bằng vòng lặp lồng nhau

Chúng tôi cũng đạt được kết quả tương tự bằng cách sử dụng vòng lặp Python for lồng nhau. “Vòng lặp for lồng nhau” là một cách nói khác của “vòng lặp for trong vòng lặp for. ” Việc hiểu danh sách của chúng ta là một cách khác để biểu diễn vòng lặp for sau đây

new_foods = []
for sublist in foods:
	for food in sublist:
		new_foods.append[food]

print[new_foods]

Mã của chúng tôi sử dụng hai vòng lặp để lặp qua từng mục danh sách trong mỗi danh sách trong danh sách danh sách ban đầu. Hãy chạy mã của chúng tôi

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

Chương trình của chúng tôi trả về kết quả tương tự như khả năng hiểu danh sách của chúng tôi. Trong hầu hết các trường hợp, hiểu danh sách là giải pháp tốt hơn so với vòng lặp for. Khả năng hiểu danh sách ngắn hơn và trong trường hợp này dễ đọc hơn vòng lặp for lồng nhau

» THÊM.   Trăn phao. Hướng dẫn từng bước

con trăn. Làm phẳng danh sách bằng Itertools

Itertools là một module trong thư viện chuẩn của Python. Mô-đun này cung cấp một loạt các phương thức, giúp dễ dàng làm việc với các đối tượng và trình tạo có thể lặp lại

Đối với mục đích của chúng tôi, chúng tôi chỉ đề cập đến phương thức chain[]. Phương thức này chấp nhận một danh sách các danh sách và trả về một danh sách phẳng

Bắt đầu bằng cách nhập mô-đun itertools vào mã của chúng tôi bằng câu lệnh nhập Python

import itertools

Tiếp theo, xác định danh sách các danh sách và sử dụng phương thức chain[] để làm phẳng danh sách

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

new_foods = itertools.chain[*foods]

Trong mã của chúng tôi, chúng tôi sử dụng ký hiệu * để giải nén danh sách của mình. Điều này chuyển đổi danh sách của chúng ta thành các đối số hàm có thể được phân tích cú pháp bằng phương thức chain[]

Phương thức chain[] trả về một itertools. đối tượng chuỗi. Để xem danh sách được làm phẳng của chúng tôi, chúng tôi phải chuyển đổi đối tượng này thành danh sách. Chúng tôi làm điều này bằng cách sử dụng phương thức list[]

________số 8_______

Hãy thực thi mã của chúng tôi

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

Mã của chúng tôi đã làm phẳng danh sách của chúng tôi

Mặc dù itertools là một cách hiệu quả để làm phẳng danh sách, nhưng nó tiên tiến hơn hai cách tiếp cận cuối cùng mà chúng ta đã thảo luận

"Career Karma bước vào cuộc đời tôi khi tôi cần nó nhất và nhanh chóng giúp tôi phù hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi đã tìm được công việc mơ ước phù hợp với giá trị và mục tiêu của mình trong cuộc sống. "

Venus, Kỹ sư phần mềm tại Rockbot

Find Your Bootcamp Match

Điều này là do bạn phải nhập itertools vào mã của mình để giới thiệu một phụ thuộc mới. Hơn nữa, phương thức chain[] liên quan đến việc giải nén có thể khó hiểu.  

Phần kết luận

Bạn có thể làm phẳng danh sách Python bằng cách sử dụng khả năng hiểu danh sách, vòng lặp for lồng nhau và itertools. phương thức chuỗi []. Việc hiểu danh sách là phương pháp "Pythonic" nhất và do đó được ưa chuộng trong hầu hết các trường hợp

» THÊM.   Lỗi loại Python. Đối tượng 'int' không thể gọi được Giải pháp

Mặc dù các vòng lặp lồng nhau có hiệu quả, nhưng chúng tiêu tốn nhiều dòng mã hơn là hiểu danh sách. itertools. chain[] cũng hiệu quả tương tự nhưng người mới bắt đầu có thể khó hiểu

Thường không cần nhập thư viện mới — itertools — khi Python cung cấp cho bạn tất cả các công cụ bạn cần để làm phẳng danh sách

Bạn có muốn tìm hiểu thêm về Python? . Bạn sẽ tìm thấy các mẹo học tập của chuyên gia và danh sách các khóa học và sách hàng đầu mà bạn có thể học



Về chúng tôi. Career Karma là một nền tảng được thiết kế để giúp người tìm việc tìm kiếm, nghiên cứu và kết nối với các chương trình đào tạo việc làm để thăng tiến trong sự nghiệp của họ. Tìm hiểu về ấn phẩm CK

Chủ Đề