拆分1下第2,3行,或者解释也行
def iq_test(numbers):
e = [int(i) % 2 == 0 for i in numbers.split()]
return e.index(True) + 1 if e.count(True) == 1 else e.index(False) + 1
print(iq_test("2 4 7 8 10"))
列表解析语法:[表达式 for 当前遍历值 in 可迭代对象 if 判断条件],该语句会生成一个列表,规则是遍历一个迭代对象,当满足一定条件时将表达式添加到列表中,判断条件和表达式中可以使用变量当前遍历值。
三目运算符 表达式1 if 判断条件 else 表达式2,等价于其他语言的?:运算符,当满足判断条件时值为表达式1,不满足则为表达式2
等价于下列代码
def iq_test(numbers):
e = []
# 将字符串numbers按空格拆分,判断每一个元素的int值的奇偶性,生成一个True和False的列表,True为偶数,False为奇数
for i in numbers.split():
e.append(int(i) % 2 == 0)
# 如果只有一个偶数,那么返回这个偶数是第几个数(数组下标要加一)
if e.count(True) == 1:
result = e.index(True) + 1
# 如果不止有一个偶数,那么返回数组中第一个奇数的位置
else:
result = e.index(False) + 1
return result