01/10/2018, 11:53
Nhờ giải thích giúp đoạn Code về Reduce
Em có đoạn Code dưới đây dùng để xóa bớt các giá trị trùng nhau trong 1 list:
l = [5, 6, 6, 1, 1, 2, 2, 3, 4]
s= reduce(lambda r, v: v in r and r or r + [v], l, [])
print s
KQ: [5, 6, 1, 2, 3, 4]
Tuy nhiên em chưa hiểu các biểu thức bên trong hàm reduce, nhờ các anh chị giải thích giúp e vs ạ.
Em có tìm hiểu về hàm reduce rồi nhưng cú pháp trong trường hợp này lạ quá, em chưa hiểu được.
Cám ơn mọi người ạ
Bài liên quan
cái đoạn
r in v and r or r + [v]
nó giống toán tử ba ngôi vậy đó nó kiểm tra xem phần tử v có trong list r chưa nếu có thì tiếp tục để nguyên còn ko thì add v vô.Trước tiên, bạn cần hiểu dòng
lambda
. Hoàn toàn chính xác như anh Hùng đề cập, để mình cho bạn vài ví dụCó thể xem công thức tổng quát của nó là
Tiếp đến là cái hàm
reduce
. Ở đây mình sẽ nói trường hợp3 arguments
. Còn bạn muốn đủ thì lên mạng đọc, có docs.Hàm
reduce
sẽ như sauBạn cố suy ngẫm hàm trên nhé. Nếu xong rồi, hãy kéo xuống!
Hiểu hàm reduce ở trên rồi. Đây là cách viết rõ ràng của dòng reduce của bạn
Hic …. hình như đoạn comment anh viết bị lộn phải không. Nếu chưa có thì Ad vô còn có rồi thì giữ nguyên.