对于一项作业,我需要做以下两个练习:
创建一个列表,其中包括将每个数字从1到9(包括)乘以100,只要该数字除以2且没有余数。
创建一个列表,其中包括将每个数字从1到9(包括)乘以100,仅当该数字除以2且没有余数时。如果存在余数,则将数字保持原样,请勿乘以100。
答案1有效:
list_1 = [num * 100 for (num) in range(1,10) if num % 2 == 0]
print (list_1)
但是练习2的答案为什么不起作用?:
list_1 = [num * 100 for (num) in range(1,10) if num % 2 == 0 else num]
print (list_1)
答案 0 :(得分:2)
可以的;
In [1]: [x * 100 if x % 2 == 0 else x for x in range(1, 10)]
Out[1]: [1, 200, 3, 400, 5, 600, 7, 800, 9]
答案 1 :(得分:2)
这样写:
list_1 = [num * 100 if num % 2 == 0 else num for num in range(1,10)]
答案 2 :(得分:2)
您可以执行以下操作:
list_1 = [(num * 100 if num % 2 == 0 else num) for (num) in range(1,10)]
哪个语句评估x if y else z
作为每个列表元素的输出。
希望这会有所帮助:)
答案 3 :(得分:2)
您的交替切换到处都是。
[x for x in xs if some_predicate else y]
解析为
[(x for x in xs) if some_predicate else (y)] # which makes no sense
不是
[(x) for x in xs if some_predicate else (y)]
但是你可以做
[x if some_predicate else y for x in xs]