Hola, quiero preguntar cómo recorrer cada elemento e incrementar cada vez en uno. Esto es lo que quiero. Primero quiero sumar 0, 1, 3, 6, 10 y después de esa suma, ¿alguien puede ayudarme? sepa cómo saber si se trata de un bucle a través de cada elemento o de una iteración. Debería verse como estos ejemplos. ¡Lo siento!
l = [0, 1, 3, 6, 10]
l = [1, 3, 6, 10]
l = [3, 6, 10]
l = [6, 10]
ls = [10]
ls = []
Aquí está el problema que quiero resolver: https://www.codewars.com/kata/5ce399e0047a45001c853c2b/train/python
Intenté esto pero no funciona
def parts_sums(ls):
length_list = len(ls)
for i in range(0,length_list+1):
return length_list
Tenga en cuenta que hay una función integrada sum()
en Python que hace ese trabajo probablemente mejor que cualquier código que pueda escribir en Python.
sum([0, 1, 3, 6, 10])
Sin embargo, si desea practicar escribir su función de suma iterando a través de una lista y sumando todos los elementos, así es como lo hace.
def my_sum(ls):
result = 0
for i in range(len(ls)):
result += ls[i]
return result
En primer lugar, debe inicializar una variable para mantener su resultado. La range()
función genera todos los valores de 0 a x. El ciclo for asigna todos los valores generados por la función de rango i
en orden y ejecuta el bloque sangrado a continuación. La +=
asignación incrementa la variable del lado izquierdo por el valor de la expresión del lado derecho. Por último, devolvemos el resultado.
Y si prefiere usar un ciclo while,
def my_sum(ls):
result = 0
i = 0
while i < len(ls):
result += ls[i]
i += 1
return result
Siempre es bueno consultar la documentación de Python cuando no está seguro de cómo usar su función integrada.
Si desea invertir la suma acumulada de todos los elementos, puede consultar la accumulate
función en itertools
.
from itertools import accumulate
def parts_sums(ls):
return list(accumulate(ls[::-1]))[::-1] + [0]
O si desea implementar con un bucle,
def parts_sums(ls):
result = []
part_sum = 0
for item in ls[::-1]:
result.append(part_sum)
part_sum += item
result.append(part_sum)
return result[::-1]
O si quieres hacerlo sin invertir la lista (di si quieres dar los resultados)
def parts_sums(ls):
result = []
part_sum = sum(ls)
for item in ls:
result.append(part_sum)
part_sum -= item
result.append(part_sum)
return result
Tenga en cuenta que el algoritmo sigue siendo O (n), no es que la complejidad del tiempo importe en este caso.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras