我尝试过使用布尔但不能正常工作
a = [4,10,1,7]
if a % 2 != 0:
print a
我进入终端的所有内容都是unsupported operand type(s) for %: 'list' and 'int'
如何获得[4,10,0,0]
答案 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