Necesito sumar todos los números en la lista. Si ocurre 0, comience a restar, hasta otro 0, comience a sumar.
Por ejemplo:
[1, 2, 0, 3, 0, 4] -> 1 + 2 - 3 + 4 = 4
[0, 2, 1, 0, 1, 0, 2] -> -2 - 1 + 1 - 2 = -4
[1, 2] -> 1 + 2 = 3
[4, 0, 2, 3] = 4 - 2 - 3 = -1
Esto es lo que he intentado:
sss = 0
for num in numbers:
if 0 == num:
sss = -num
else:
sss += num
return sss
5 respuestas
Cambie el signo cuando el elemento de la lista sea igual a 0.
result = 0
current_sign = 1
for element in your_list:
if element == 0:
current_sign *= -1
result += current_sign*element
Otra variación con el módulo operator
y la negación a nivel de bits ~
:
import operator
def accum_on_zero(lst):
res = 0
ops, pos = (operator.add, operator.sub), 0
for i in lst:
if i == 0:
pos = ~pos
res = ops[pos](res, i)
return res
print(accum_on_zero([1, 2, 0, 3, 0, 4])) # 4
print(accum_on_zero([0, 2, 1, 0, 1, 0, 2])) # -4
lst = [1, 2, 0, 3, 0, 4]
print(sum([v * (-1) ** lst[0:i].count(0) for i, v in enumerate(lst)]))
Prueba esto:
d = [1, 2, 0, 3, 0, 4]
sum = 0
sign = False
for i in d:
if i == 0:
if sign == False:
sign = True
else:
sign = False
else:
if sign == False:
sum += i
else:
sum -= i
print(sum)
Aquí hay una solución que alterna entre dos operadores (suma y resta) cada vez que un valor en la lista es cero:
from operator import add, sub
from itertools import cycle
cycler = cycle([add, sub])
current_operator = next(cycler)
result = 0
my_list = [1, 2, 0, 3, 0, 4]
for number in my_list:
if number == 0:
current_op = next(cycler)
else:
result = current_operator(result, number)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.