01/10/2018, 09:17
Làm sao để chuyển đoạn code dùng for loop này sang reduce trong Python?
Mấy bạn cho mình hỏi mình có đoạn code sau để tính biểu thức
s = [s[0], s[1], s[2], ... s[n-1]]
res = (((...(s[0] + s[1]) * s[2] + s[3]) * s[4] + ...)
Python:
s = [1, 2, 3, 4, 5, 6, 7]
def add(x, y):
return x + y
def mul(x, y):
return x * y
res = s[0]
for i in xrange(1, len(s)):
if i % 2 == 0:
res = mul(res, s[i])
else:
res = add(res, s[i])
# res_reduce = reduce(...) # ?
print res
bây giờ mình muốn chuyển sang dùng lambda bằng hàm reduce:
res = reduce(lambda x, y: x + y if ... x * y,s)
thì phải làm sao để đổi điều kiện đây mấy bạn @.@ ?
Bài liên quan
Mình chỉ viết được thế này thôi
Mà sao phải khổ thế bạn, cứ viết bình thường cho dễ debug
À đoạn loop nên viết kiểu này đẹp hơn này, pythonic hơn
Tại mới học nên phải làm nhiều cách cho quen cảm ơn nhiều nhé.