我对Python比较陌生,并且被告知使用列表理解创建一个列表,只显示0-100之间的偶数,然后将所有这些数字加在一起。如果它只是一个常规列表,我明白该怎么做:
Total = 0
for x in range (0,101,2):
Total += x
我不知道该怎么做才能理解。对我来说完全是无稽之谈。这就是我所拥有的。
Total = 0
x = [x for x in range (1001) if x % 2 ==0]
Total +=int(???)
print('The total is:', Total)
我不知道该怎么办?或者即使我正确地走这条路。任何帮助都会很棒!
编辑:我忘了提到它需要在for循环中。我不知道如何创建for循环和理解列表。
答案 0 :(得分:1)
用列表推导做到这一点:
print(sum([x for x in range(0,101,2)]))
但你可以这样做:
print(sum(range(0,101,2)))
两种情况下的输出都是2550。
所以显然你的要求是使用列表理解和一个for循环?我有点困惑,但你要求这个吗?
even_terms = [x for x in range(0,101,2)]
total = 0
for x in even_terms:
print(x)
total += x
print('total:', total)
<强>输出强>
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
total: 2550
答案 1 :(得分:1)
看看这个answer:
sum([x for x in range(101) if x%2 == 0])
#=> 2550
total = 0
for even in [i for i in range(101) if i%2 == 0]:
total += even
total
#=> 2550
n = 100
(n/2)*(n/2+1)
#=> 2550
答案 2 :(得分:0)
Total = reduce( lambda x, y: x + y, filter( lambda n: n % 2 == 0, range( 0, 101 ) )
或
Total = reduce( lambda x, y: x + y, range( 0, 101, 2 ) )
答案 3 :(得分:0)
你的第一个例子是正确的。 range
和理解产生的列表都是可迭代的,因此它们都在for循环中工作。只需用理解来替换范围:
xs = [x for x in range (1001) if x % 2 ==0]
Total = 0
for x in xs:
Total += x
print(Total)
答案 4 :(得分:0)
使用sum
可能是在添加时迭代列表推导的规范方法。
def calculate_sum_over_range(start, end, interval=2):
return sum(_ for _ in range(start, end, interval))
print(calculate_sum_over_range(0, 101))
祝你的家庭作业好运。