Проблемы с простым циклом - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу сделать al oop, который суммирует первые два элемента списка и сохраняет результат в новом списке. После этого он должен взять первые три элемента из первого списка, суммировать их и сохранить результат в том же списке.

Что я пытаюсь сделать:

x = [1, 2, 3, 4]
y = []

for i in x:
     s = i + (i+1)
     y.append(s)

Это делает не работает вообще. Из-за моего плохого понимания трудно получить помощь от Google. Я надеюсь, что некоторые могут понять мою проблему.

Ответы [ 3 ]

2 голосов
/ 13 апреля 2020

Это будет работать для вас

x = [1, 2, 3, 4]
y = []

for i in range(2,len(x)+1):
    y.append(sum(x[:i]))
print(y)
0 голосов
/ 13 апреля 2020

Вам на самом деле не нужны все oop, но если вы хотите:

x = [1, 2, 3, 4]
new_list = []

for count in range(len(x) - 2):
  if count <2:
    new_list.append( sum(x[:count+2]) )

print(new_list)

# OR without loop 

x = [1, 2, 3, 4]
new_list = []

sums_of_the_first_two = sum(x[:2])
new_list.append(sums_of_the_first_two)
sums_of_the_first_three = sum(x[:3])
new_list.append(sums_of_the_first_three)

print(new_list)

Редактировать: 2-я часть комментария Стивена Румбальски - лучшее решение, я думаю,

0 голосов
/ 13 апреля 2020

Похоже, вам нужно понимание списка, которое суммирует постепенно увеличивающиеся и большие списки, когда вы перебираете


Это будет работать.

>>> x = [1,2,3,4]
>>> x
[1,2,3,4]

# Note we put the condition `if i != 0` so that we ignore the first entry in the list
#
# This comprehension essentially is taking the indices for the given list
# and utilizing the indices to generate a subset list of indices (`range(i+1)`)
# and by using these subset indices we can generate a subset of values which
# we can then sum as you requested.
>>> y = [sum([x[idx] for idx in range(i+1)]) for i in range(len(x)) if i !=0]
>>> y
[3, 6, 10]

Дайте мне знать, если у вас есть какие-либо вопросы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...