Việc viết vòng lặp và ghi nhớ trước đó là rất phổ biến.Trừ mục hiện tại và trước đó trong danh sách
Tôi muốn một máy phát điện làm điều đó cho tôi. Một cái gì đó như:
import operator
def foo(it):
it = iter(it)
f = it.next()
for s in it:
yield f, s
f = s
Bây giờ trừ cặp đôi.
L = [0, 3, 4, 10, 2, 3]
print list(foo(L))
print [x[1] - x[0] for x in foo(L)]
print map(lambda x: -operator.sub(*x), foo(L)) # SAME
Đầu ra:
[(0, 3), (3, 4), (4, 10), (10, 2), (2, 3)]
[3, 1, 6, -8, 1]
[3, 1, 6, -8, 1]
- một tên tốt cho hoạt động này là gì?
- Cách tốt hơn để viết nội dung này là gì?
- Có chức năng tích hợp nào tương tự không?
- Cố gắng sử dụng 'bản đồ' đã không đơn giản hóa nó. Gì vậy?
Danh sách hiểu là đã trivially đơn giản, và đó là cách rõ ràng và tự nhiên để làm được điều này. Đi từ đó đến "bản đồ" mơ hồ hơn nhiều cho thấy bạn đang suy nghĩ quá mức về điều này. Chức năng máy phát điện cũng đã đơn giản và dễ hiểu. –
trông giống như http://en.wikipedia.org/wiki/Bigram, còn gọi là ngram khi n là 2 – sunqiang