× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Thông tin cần biết về Python Listing cho beginner

09/08/2022 03:54

Khả năng hiểu danh sách là một phương pháp mạnh mẽ và ngắn gọn để tạo danh sách bằng Python, điều này trở nên cần thiết khi bạn làm việc với danh sách và danh sách nhiều hơn

Rất có thể bạn sẽ sử dụng rất nhiều danh sách với tư cách là một lập trình viên Python. Trong khi tất cả chúng ta đều là những người hâm mộ lớn của vòng lặp for (và các vòng lặp for lồng nhau), Python cung cấp một phương pháp ngắn gọn hơn để xử lý danh sách và hiểu danh sách. 

Để giữ cho mã của bạn thanh lịch và dễ đọc, bạn nên sử dụng các tính năng hiểu của Python.

Khả năng hiểu danh sách là một phương pháp mạnh mẽ và ngắn gọn để tạo danh sách bằng Python, điều này trở nên cần thiết khi bạn làm việc với danh sách và danh sách nhiều hơn.

Cú pháp

Hãy xem xét ví dụ sau: my_new_list = [ expression for item in list ]

Bạn có thể thấy từ ví dụ này rằng ba thành phần cần thiết để hiểu danh sách python hoạt động.

  1. Đầu tiên là biểu thức chúng tôi muốn thực hiện. biểu thức bên trong dấu ngoặc vuông.
  2. Thứ hai là đối tượng mà biểu thức sẽ hoạt động. mục bên trong dấu ngoặc vuông.
  3. Cuối cùng, chúng ta cần một danh sách các đối tượng có thể lặp lại để tạo danh sách mới của chúng ta. danh sách bên trong dấu ngoặc vuông.

Để hiểu toàn bộ danh sách, hãy tưởng tượng nó như thế này: bạn sẽ thực hiện một biểu thức trên mỗi mục trong danh sách. Biểu thức sẽ xác định mục cuối cùng được lưu trữ trong danh sách đầu ra. 

Bạn không chỉ có thể thực hiện các biểu thức trên toàn bộ danh sách trong một dòng mã duy nhất, mà như chúng ta sẽ thấy ở phần sau, bạn có thể thêm các câu lệnh điều kiện ở dạng bộ lọc, điều này cho phép cách xử lý danh sách chính xác hơn.

Ghi chú về Toàn diện danh sách

  • Các phương pháp hiểu danh sách là một cách tạo và quản lý danh sách rất hiệu quả. 
  • Trong Python, hiểu danh sách là một cách nhỏ gọn hơn để tạo danh sách. 
  • Linh hoạt hơn vòng lặp for, khả năng hiểu danh sách thường nhanh hơn các phương pháp khác.

Tạo một danh sách với phạm vi ()

Hãy bắt đầu bằng cách tạo một danh sách các số bằng cách sử dụng hiểu danh sách Python. Chúng tôi sẽ tận dụng phương thức range () của Python   như một cách để tạo danh sách các chữ số.

Ví dụ 1: Tạo danh sách với khả năng hiểu danh sách

# construct a basic list using range() and list comprehensions
# syntax
# [ expression for item in list ]
digits = [x for x in range(10)]

print(digits)

Đầu ra

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Hãy chia nhỏ ví dụ về python này bằng cách bắt đầu với 'x' đầu tiên. Đây là biểu hiện của chúng tôi. Nó không làm bất cứ điều gì bởi vì chúng tôi chỉ đơn giản là ghi lại con số. Dấu 'x' thứ hai đại diện cho từng mục trong danh sách được tạo bởi phương thức range () .

Tạo danh sách bằng cách sử dụng vòng lặp và hiểu danh sách bằng Python

Để minh họa rõ hơn cách sử dụng khả năng hiểu danh sách để viết mã Python hiệu quả hơn, chúng ta sẽ xem xét so sánh song song. 

Trong ví dụ sau, bạn sẽ thấy hai kỹ thuật khác nhau để tạo danh sách Python. Đầu tiên là vòng lặp for. Chúng tôi sẽ sử dụng nó để xây dựng một danh sách các lũy thừa của hai.

Ví dụ 2: So sánh các phương pháp tạo danh sách trong Python

Đầu tiên, hãy tạo một danh sách và lặp qua nó. Thêm một biểu thức, trong ví dụ này, chúng tôi sẽ nâng x lên lũy thừa của 2.

# create a list using a for loop
squares = []

for x in range(10):
    # raise x to the power of 2
    squares.append(x**2)

print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Đầu ra

Điều tương tự có thể được thực hiện bằng cách sử dụng khả năng hiểu danh sách, nhưng với một phần nhỏ của mã. Chúng ta hãy xem cách tạo một danh sách các ô vuông bằng phương pháp đọc hiểu danh sách.

# create a list using list comprehension
squares = [x**2 for x in range(10)]

print(squares)

Ngay cả trong ví dụ cơ bản này, rõ ràng là khả năng hiểu danh sách làm giảm mã cần thiết để hoàn thành nhiệm vụ khá phức tạp khi làm việc với danh sách.

Nhân các phần của một danh sách

Điều gì sẽ xảy ra nếu chúng ta muốn nhân mọi số trong danh sách với ba trong Python? Chúng ta có thể viết một vòng lặp for và lưu trữ kết quả trong một danh sách mới hoặc chúng ta có thể sử dụng cách hiểu danh sách.

Ví dụ 3: Phép nhân với danh sách hiểu

# create a list with list comprehensions
multiples_of_three = [ x*3 for x in range(10) ]

print(multiples_of_three)

Đầu ra

[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

Bằng cách tận dụng khả năng hiểu danh sách, bạn chỉ có thể làm việc trên một phần của danh sách. Ví dụ: nếu bạn chỉ muốn các số chẵn trong một phạm vi nhất định, bạn có thể tìm chúng bằng cách sử dụng bộ lọc.

Thêm một bộ lọc vào danh sách dễ hiểu cho phép linh hoạt hơn. Bằng cách sử dụng bộ lọc, chúng tôi có thể chọn một số mục nhất định từ danh sách, đồng thời loại trừ những mục khác. Đây là một tính năng nâng cao của danh sách trong Python.

even_numbers = [ x for x in range(1,20) if x % 2 == 0]

Đầu ra

[2, 4, 6, 8, 10, 12, 14, 16, 18]

Hiển thị chữ cái đầu tiên của mỗi từ bằng Python

Cho đến nay, chúng ta đã thấy các ví dụ về việc xây dựng danh sách các số trong Python. Tiếp theo, hãy thử làm việc với các chuỗi và các cách khác nhau trong danh sách có thể được sử dụng để xử lý một cách thanh lịch danh sách các chuỗi.

Ví dụ 4: Sử dụng khả năng hiểu danh sách với chuỗi

# a list of the names of popular authors
authors = ["Ernest Hemingway","Langston Hughes","Frank Herbert","Toni Morrison",
    "Emily Dickson","Stephen King"]

# create an acronym from the first letter of the author's names
letters = [ name[0] for name in authors ]
print(letters)

Đầu ra

['E', 'L', 'F', 'T', 'E', 'S']

Việc hiểu danh sách có thể làm cho việc giải quyết các vấn đề liên quan đến chuỗi dễ dàng hơn nhiều bằng cách sử dụng các biểu thức đơn giản hóa. Những phương pháp này có thể tiết kiệm thời gian và những dòng mã quý giá.

Ví dụ 5: Tách các ký tự trong một chuỗi

# use list comprehension to print the letters in a string
letters = [ letter for letter in "20,000 Leagues Under The Sea"]

print(letters)

Đầu ra

['2', '0', ',', '0', '0', '0', ' ', 'L', 'e', 'a', 'g', 'u', 'e', 's', ' ', 'U', 'n', 'd', 'e', 'r', ' ', 'T', 'h', 'e', ' ', 'S', 'e', 'a']

Bộ chuyển đổi chữ thường / chữ hoa bằng Python

Sử dụng khả năng hiểu danh sách để lặp qua một chuỗi trong Python, bạn có thể chuyển đổi chuỗi từ chữ thường sang chữ hoa và ngược lại. 

Sử dụng các phương thức Lower () và upper () của Python , chúng ta sẽ sử dụng khả năng hiểu danh sách để đạt được nhiệm vụ chung này.

Ví dụ 6: Thay đổi cách viết hoa của một lá thư

lower_case = [ letter.lower() for letter in ['A','B','C'] ]
upper_case = [ letter.upper() for letter in ['a','b','c'] ]

print(lower_case, upper_case)

Đầu ra

['a', 'b', 'c'] ['A', 'B', 'C']

Chỉ in các số từ một chuỗi đã cho

Một bài tập thú vị khác là trích xuất các số từ một chuỗi. Ví dụ, chúng tôi có thể có một cơ sở dữ liệu tên và số điện thoại.

Sẽ rất hữu ích nếu chúng ta có thể tách số điện thoại khỏi tên. Sử dụng khả năng hiểu danh sách, chúng ta có thể làm được điều đó. Tận dụng phương thức isdigit ()

của Python , chúng ta có thể trích xuất số điện thoại từ dữ liệu người dùng.

Ví dụ 7: Xác định các số trong một chuỗi bằng phương thức isdigit ()

# user data entered as name and phone number
user_data = "Elvis Presley 987-654-3210"
phone_number = [ x for x in user_data if x.isdigit()]

print(phone_number)

Đầu ra

['9', '8', '7', '6', '5', '4', '3', '2', '1', '0']

Sử dụng các hàm trong phần hiểu danh sách

Cho đến nay, chúng ta đã thấy cách sử dụng khả năng hiểu danh sách để tạo danh sách bằng một số phương thức Python cơ bản như Lower () và upper () . Nhưng nếu chúng ta muốn sử dụng các hàm Python của riêng mình thì sao?

Chúng ta không chỉ có thể viết các hàm của riêng mình với khả năng hiểu danh sách mà còn có thể thêm các bộ lọc để kiểm soát các câu lệnh tốt hơn.

Ví dụ 9: Thêm đối số vào danh sách hiểu

# list comprehension with functions
# create a function that returns a number doubled
def double(x):
    return x*2

nums = [double(x) for x in range(1,10)]
print(nums)

Đầu ra

[2, 4, 6, 8, 10, 12, 14, 16, 18]

Việc lọc các phần tử từ danh sách có thể được thực hiện bằng cách sử dụng các đối số bổ sung. Trong ví dụ sau, chỉ các số chẵn mới được chọn.

# add a filter so we only double even numbers
even_nums = [double(x) for x in range(1,10) if x%2 == 0]
print(even_nums)

Đầu ra

[4, 8, 12, 16]

Các đối số bổ sung có thể được thêm vào để tạo logic phức tạp hơn:

nums = [x+y for x in [1,2,3] for y in [10,20,30]]
print(nums)

Đầu ra

[11, 21, 31, 12, 22, 32, 13, 23, 33]

Hy vọng rằng bạn đã thấy tiềm năng của khả năng hiểu danh sách và cách chúng có thể được sử dụng để viết mã Python gọn gàng hơn. Viết mã nhỏ gọn là điều cần thiết để duy trì các chương trình và làm việc với các nhóm. 

 

Nguồn: pythonforbeginners