Giống như list comprehension (cách viết code ngắn gọn để tạo một danh sách phức tạp) và hàm lambda, code một dòng có thể tiết kiệm rất nhiều thời gian và không gian, vậy làm thế nào bạn có thể nắm vững chúng?
Có thể bạn đã thấy code một dòng có thể thay thế toàn bộ 3 dòng code trong python, ví dụ như vòng lặp for, có thể đây là lý do tại sao python rất phổ biến và dễ sử dụng nhưng thật sự code một dòng cho vòng lặp for có thể thay thế 3 dòng code?
Hãy lấy một ví dụ:
some_list = []
for i in range(10):
some_list.append(i)
Vòng lặp for trong python dễ dàng và đơn giản là thêm các số vào danh sách, vì vậy bạn có thể làm gì để viết điều này trong một dòng:
some_list = [i for i in range(10)]
Đây là một mã đầy đủ chức năng có thể lưu các số 0-9 trong danh sách và hoàn toàn giống với mã trước đó.
Bài viết này sẽ cố gắng giải thích càng nhiều code một dòng càng tốt. Hãy bắt đầu với mã trước, mã này được gọi là List Comprehension. Ngoài ra bạn cũng có thể thực hiện các vòng lặp lồng, vòng lặp có điều kiện bên trong. Hãy xem một vài ví dụ:
# List Comprehension
some_list = [i for i in range(10)]
# Vòng lặp lồng
some_list = [[i for i in range(10)] for j in range(10)]
some_list = [i for i in range(10) for j in range(10)]
# List Comprehension & Các điều kiện
some_list = [ x for x in range(20) if x % 2 == 0]
some_list = [ y for y in range(20) if y != 2]
Có thể bạn đã hiểu được ý tưởng, bạn có thể sáng tạo nhiều nhất có thể với List Comprehension, chúng rất dễ sử dụng và thú vị và có thể giúp bạn tiết kiệm thời gian nếu bạn biết mình đang làm gì. Ví dụ tiếp theo sẽ kiểm tra xem một chuỗi có phải là đỗi xứng hay không, một cách tiếp cận tiêu chuẩn sẽ là lấy chuỗi của bạn, chuyển đổi nó thành một danh sách và sau đó đảo ngược danh sách đó, nối các chữ cái trong danh sách và so sánh xem từ này có giống với đầu vào của bạn không:
T = "abba"
lst = []
for i in T:
lst.append(i)
print("".join(lst) == T)
Ta có thể thực hiện điều này chỉ bằng 1 dòng code duy nhất:
T = "abba"
print(T[::-1] == T)
Đúng vậy, mã này sẽ đảo ngược chuỗi đầu vào của bạn và so sánh nó với chuỗi gốc nếu nó giống nhau thì hàm tìm sẽ trả về True ngược lại thì False. Tất nhiên, bạn có thể làm điều này theo nhiều cách khác nhau, bạn chỉ cần sáng tạo! Hãy hoán đổi 2 biến, ta sẽ bắt đầu với cách tiếp cận chuẩn, bạn có 2 biến và bạn muốn hoán đổi giá trị. Khi đó ta cần gán một trong các giá trị cho một biến mới sau đó di chuyển giá trị này sang biến khác rồi gán lại giá trị biến tạm cho biến khác này, cụ thể như sau:
a = 10
b = 20
temp = a
a = b
b = temp
Thực hiện điều này bằng code một dòng như sau:
a = 10
b = 20
a, b = b, a
Kết luận
Đây là phần giới thiệu về cách có thể viết code một dòng trong python, còn nhiều điều để khám phá, điều này chỉ cung cấp cho bạn ý tưởng nếu bạn tò mò muốn tìm hiểu thêm, tất cả những gì bạn cần là thực hành, phát triển khả năng sáng tạo của mình vì nó chìa khóa để học.
Bắt đầu bằng cách nâng cao kiến thức của bạn về python để giúp bạn suy nghĩ tốt hơn về các cú pháp khác, đây không phải là danh sách đầy đủ, có rất nhiều thứ để tìm hiểu và chắc chắn điều này sẽ giúp bạn tiết kiệm nếu bạn muốn trở thành một nhà khoa học dữ liệu hoặc phân tích dữ liệu.