将非空整数列表的每个奇数元素设置为零

时间:2016-01-10 18:07:58

标签: python python-2.7

我尝试过使用布尔但不能正常工作

a = [4,10,1,7]

if a % 2 != 0:
    print a 

我进入终端的所有内容都是unsupported operand type(s) for %: 'list' and 'int'

如何获得[4,10,0,0]

的输出

2 个答案:

答案 0 :(得分:3)

简单地说,你不是在迭代a。在列表中进行迭代,然后检查您的if条件,然后应用然后应用更改:

a = [4,10,1,7]

for i, x in enumerate(a):

    if x % 2 != 0:
        a[i] = 0
print a
[4, 10, 0, 0]

或者,您可以使用内置方法执行此操作,例如map

a = map(lambda x: 0 if x%2 else x, a)

或者通过列表理解,例如wim评论:

a = [0 if x%2 else x for x in a]

来自Python docs

  

enumerate(sequence, start=0)返回一个枚举对象。序列必须   是序列,迭代器或其他支持的对象   迭代。 enumerate()返回的迭代器的next()方法   返回一个包含计数的元组(从start开始,默认为0)   以及从迭代序列​​中获得的值。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

答案 1 :(得分:0)

首先,您需要迭代元素(最好使用for循环,因为您知道列表中元素的数量):

for n in range(len(a)):

然后,对于每个元素,检查它是偶数还是奇数:

if a[n] % 2 != 0:
    a[n] = 0