Python加减序列
大家好,我想做一个函数,用第二个数减去第一个数,然后加第三个数,再减去第四个数,也就是说,Python加减序列,python,Python,大家好,我想做一个函数,用第二个数减去第一个数,然后加第三个数,再减去第四个数,也就是说,x1-x2+x3-x4+x5-x6… 到目前为止,我只能添加两个变量,x和y。我想做什么 >>> reduce(lambda x,y: (x-y) +x, [2,5,8,10] 还是不明白 非常简单的东西让人困惑。使用一个乘法器,在每次加法后还原为+ result = 0 mult = 1 for i in [2,5,8,10]: result += i*mult mul
x1-x2+x3-x4+x5-x6…
到目前为止,我只能添加两个变量,x和y。我想做什么
>>> reduce(lambda x,y: (x-y) +x, [2,5,8,10]
还是不明白
非常简单的东西让人困惑。使用一个乘法器,在每次加法后还原为+
result = 0
mult = 1
for i in [2,5,8,10]:
result += i*mult
mult *= -1
使用在每次加法后恢复为+-的乘数
result = 0
mult = 1
for i in [2,5,8,10]:
result += i*mult
mult *= -1
在这种情况下,使用总和会更容易:
a = [2,5,8,10]
sum(a[::2])-sum(a[1::2])
-5
在这种情况下,使用总和会更容易:
a = [2,5,8,10]
sum(a[::2])-sum(a[1::2])
-5
您可以使用
枚举
,跟踪位置(以及是否执行+
或-
),并且可以使用-12n是+1,-12n+1是-1这一事实。将此作为一个因子,然后对所有术语进行求和
>>> sum(e * (-1)**i for i, e in enumerate([2,5,8,10]))
-5
您可以使用
枚举
,跟踪位置(以及是否执行+
或-
),并且可以使用-12n是+1,-12n+1是-1这一事实。将此作为一个因子,然后对所有术语进行求和
>>> sum(e * (-1)**i for i, e in enumerate([2,5,8,10]))
-5
或者仅使用sum和生成器:
In [18]: xs
Out[18]: [1, 2, 3, 4, 5]
In [19]: def plusminus(iterable):
....: for i, x in enumerate(iterable):
....: if i%2 == 0:
....: yield x
....: else:
....: yield -x
....:
In [20]: sum(plusminus(xs))
Out[20]: 3
也可以表示为:
sum(map(lambda x: operator.mul(*x), zip(xs, itertools.cycle([1, -1]))))
或者仅使用sum和生成器:
In [18]: xs
Out[18]: [1, 2, 3, 4, 5]
In [19]: def plusminus(iterable):
....: for i, x in enumerate(iterable):
....: if i%2 == 0:
....: yield x
....: else:
....: yield -x
....:
In [20]: sum(plusminus(xs))
Out[20]: 3
也可以表示为:
sum(map(lambda x: operator.mul(*x), zip(xs, itertools.cycle([1, -1]))))
如果您真的想使用reduce,出于某种原因,您可以这样做:
class plusminus(object):
def __init__(self):
self._plus = True
def __call__(self, a, b):
self._plus ^= True
if self._plus:
return a+b
return a-b
reduce(plusminus(), [2,5,8,10]) # output: -5
如果您真的想使用reduce,出于某种原因,您可以这样做:
class plusminus(object):
def __init__(self):
self._plus = True
def __call__(self, a, b):
self._plus ^= True
if self._plus:
return a+b
return a-b
reduce(plusminus(), [2,5,8,10]) # output: -5
您将无法使用
reduce
来解决此问题。循环如何?您想了解如何在Python中使用lambda
s,还是只想了解如何编写函数来计算x1-x2+x3-x4+x5-x6
?计算函数您将无法使用reduce
来解决此问题。循环如何?您想了解如何在Python中使用lambda
s,还是只想了解如何编写函数来计算x1-x2+x3-x4+x5-x6
?计算函数