Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Biểu thức Lambda trong Python để sắp xếp lại số dương và âm


Bài viết demo việc dùng list comprehension (thường nhầm lẫn là lambda) để tách số âm và số dương từ một mảng, sau đó gộp lại với số âm ở trước, số dương ở sau.

Ví dụ

def rearrange(arr):
    # List comprehension lọc số âm
    arr_neg = [x for x in arr if x < 0]
    # List comprehension lọc số dương và 0
    arr_pos = [x for x in arr if x >= 0]
    # Gộp: âm trước, dương sau
    return arr_neg + arr_pos

# Chương trình chính
if __name__ == "__main__":
    arr = [19, -56, 3, -1, -45, -23, 45, 89, 90]
    print(rearrange(arr))

Kết quả

[-56, -1, -45, -23, 19, 3, 45, 89, 90]

Giải thích & Sửa lỗi thuật ngữ

  • Code trên dùng list comprehension, không phải lambda. Lambda là hàm ẩn danh: lambda x: x < 0.
  • Nếu muốn dùng filter() + lambda:
arr_neg = list(filter(lambda x: x < 0, arr))
arr_pos = list(filter(lambda x: x >= 0, arr))

Cách viết gọn (một dòng)

rearrange = lambda arr: [x for x in arr if x < 0] + [x for x in arr if x >= 0]

Kết luận

Đã trình bày cách phân tách và sắp xếp lại số âm/dương. Lưu ý phân biệt rõ lambda (hàm ẩn danh) và list comprehension (cú pháp tạo list).