python 字符串和内部条件

python strings and insider condition

好吧,我正在 Udemy 上学习,我无法弄清楚为什么这行代码的结果:

numbers = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
result = [num + 3 for num in numbers if num % 2 == 0]
print(result)

是 [5, 11, 37] 而不是 [4, 4, 6, 8, 16, 24, 58]?

感谢您的帮助。

if num % 2 == 0

表示你只想在 num 为偶数时执行代码。 这样只有 2,8 和 34 被添加到列表中并增加 3.

你期待的答案(只有奇数加3)是当最后一位是这样的:

if num % 2 != 0

for num in numbers 迭代列表的元素。
if num % 2 == 0 限制为偶数。 因此,您最终将 3 添加到 : 2、8 和 34,这给出了预期的结果。

更明确的循环是:

numbers = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
result = []
for num in numbers:
    if num%2 == 0: # if it's even
        result.append(num+3)
print(result)