Функция не удаляет второе целое число - PullRequest
0 голосов
/ 28 апреля 2020
    def sumUp(array):
        for row in array:
            if row > 5:
                array.remove(row)
        add = sum(array)
        return add

Массив [1, 20, 20, 5, 50, 2, 2, 1]

Массив возвращен [1, 20, 5, 2, 2, 1]

Мне было интересно, где я ошибся, поскольку эти 20 все еще в массиве.

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Это вызвано тем, что вы удаляете элементы из списка, по которому вы выполняете итерацию.

Вы можете использовать понимание списка, чтобы создать новый список, содержащий только те элементы, которые вы не хотите удалять:

def sumUp(array):
    array = [x for x in array if x <= 5]
    add = sum(array)
    return add
0 голосов
/ 28 апреля 2020

Замените

for row in array:

на

for row in array[:]:

Таким образом, вы будете перебирать копию array, которая не будет изменена вашим remove s.

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

при удалении вы пропускаете следующий элемент, поэтому делайте это в обратном порядке

def sumUp(array):
        for i,row in enumerate(reversed(array)):
            if row > 5:
                array.remove(row)
        print(array)
        add = sum(array)
        return add
ar = [1, 20, 20, 5, 50, 2, 2, 1]
sumUp(ar)
[1, 5, 2, 2, 1]
11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...