你如何在数组中找到奇数元素?

时间:2013-05-04 02:27:27

标签: python arrays

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 个答案:

答案 0 :(得分:3)

  1. 你不是在总结他们
  2. i + 1无所事事
  3. 获取所有奇数元素

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

    只得到奇数元素之和

    sum_odds = sum(n for n in sums if n % 2)
    

答案 1 :(得分:1)

可以在一行中完成:

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

另外,请查看我在问题所在位置的评论。

答案 2 :(得分:0)

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

关于你做错了什么,你正在迭代一个包含元素0size的迭代,这不会总是是{的值{1}}(除非num确实是num)。一旦你range(size)代表i中你正在迭代的值,num将意味着甚至,如果你想要赔率,那么数字 musn't 可以被两个整除。因此,应将其更改为if i%2 == 0if i%2 != 0。您还必须在if i%2循环之前声明odd列表,以便在for i ...中附加符合{{1}条件的数字选择控制结构。在您重新分配新值时,您应该通过执行numif i%2中添加号码。你也不应该递增num。 'i'应代表odd.append(i)中的数字,而不是i中数字的索引

答案 3 :(得分:0)

如果您要在数组中找到奇数位置的元素总和:

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)