Как вы находите нечетные элементы в массиве?

def fillaray(size):

    num = [0] * size
    num = [random.randint(0,9) for i in range(size)]
    print(num)

    return num


def totalOdds(num, size):

    for i in range (size):
        if i % 2 ==0:
            odd = num[i]
            i+1
    print(odd)

Как вы можете видеть в def totalOdds()Я пытаюсь отделить нечетные элементы от массива "Num". Я планирую добавить все значения в нечетные элементы вверх. Может ли кто-то указать мне в правильном направлении, что я делаю неправильно?

Благодарю.

4 ответа

  1. Вы не суммируете их
  2. я +1 ничего не делаю

чтобы получить все нечетные элементы

odds = [n for n in nums if n%2]

получить только сумму нечетных элементов

sum_odds = sum(n for n in sums if n % 2)
nums = [1,2,3,4,5,6,7,8,9,10,11,12]
odds = [ n for n in nums if n%2 ]
print odds

дает:

>>> 
[1, 3, 5, 7, 9, 11]

Это может быть помещено в функцию следующим образом:

def getOdds(aList):
    return [ n for n in aList if n%2 ]

Пример использования:

myOdds = getOdds(nums)
print("{0} has {1} odd numbers which were {2}".format(nums,len(myOdds),myOdds))
print("The odd numbers sum to {0}".format(sum(myOdds)))

Производит:

>>> 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] has 6 odd numbers which were [1, 3, 5, 7, 9, 11]
The odd numbers sum to 36

Что касается того, что вы делаете неправильно, вы перебираете итерацию, содержащую элементы 0 в size это не всегда будет ценность num (Если не указано num это действительно range(size)). Как только вы сделаете i представлять значение в num который вы повторяете, if i%2 == 0 будет означать, что четное, если вы хотите шансы, число не делится на два. Следовательно, это должно быть изменено на if i%2 != 0 или же if i%2, Вы также должны будете объявить odd список перед for i ... цикл, так что вы можете добавить числа в num которые отвечают условию в if i%2 структура выбора управления. Вы должны добавить номер в num при выполнении odd.append(i), в данный момент вы переназначаете нечетное новое значение. Вы также не должны увеличивать i, "Я" должен представлять число в num не индекс числа в num,

Можно сделать в одну строку:

print sum(x for x in num if x & 1)

Также см. Мой комментарий под вопросом, где вы ошиблись.

Если вы пытаетесь найти сумму элементов в нечетных местах в массиве:

def totalOdds(num, size):

    for i in range(size):
        if i % 2 ==0 :
            odd += num[i]
    print(odd)

Если вы пытаетесь суммировать нечетные элементы:

def totalOdds(num, size):

    for i in range(size):
        if num[i] % 2 !=0 :
            odd += num[i]
    print(odd)
Другие вопросы по тегам