题目
若有a= [ 2*i fori in range(3,0,-1)],则a为( )。 A.[6,4,2] B.[6,4,2,0] C.[6,0,-2] D.以上都错
若有a= [ 2*i fori in range(3,0,-1)],则a为( )。
A.[6,4,2]
B.[6,4,2,0]
C.[6,0,-2]
D.以上都错
题目解答
答案
我们可以对给定的列表推导式进行分析如下:
- a = [ 2*i for i in range(3,0,-1)]。这个列表推导式的含义是:对于range(3,0,-1)中的每个元素i,计算2*i的值,并将其添加到新列表a中。range(3,0,-1)表示从3开始,每次减1,直到0(不包括0)的序列,即[3, 2, 1]。因此,a的结果是[6, 4, 2]。
根据上述分析,我们可以对每个选项进行判断如下:
- A.[6,4,2]。这个选项是正确的,因为它与a的结果一致。
- B.[6,4,2,0]。这个选项是错误的,因为它多了一个0元素,而range(3,0,-1)不包括0。
- C.[6,0,-2]。这个选项是错误的,因为它与range(3,0,-1)中的元素不一致。
- D.以上都错。这个选项是错误的,因为A选项是正确的。
综上所述,选项A的叙述符合题意,且与题目描述相符,答案选A。
解析
本题考查Python中range函数的用法以及列表推导式的执行逻辑。关键在于理解range(3,0,-1)生成的序列范围,并正确计算每个元素对应的值。
核心思路:
- 分析
range参数:确定起始值、终止值和步长,明确生成的序列范围。 - 代入列表推导式:将生成的每个值代入表达式
2*i,得到最终列表。
破题关键:
range(3,0,-1)的终止值0不会被包含在序列中,因此实际生成的序列为[3,2,1]。- 正确计算每个元素对应的
2*i值。
分析range(3,0,-1)的输出
- 起始值:3
- 终止值:0(不包含)
- 步长:-1(递减)
- 生成序列:
3 → 2 → 1(共3个元素)
列表推导式计算
将序列中的每个值代入2*i:
i=3→2*3=6i=2→2*2=4i=1→2*1=2
最终列表:[6,4,2]
选项分析
- A选项:
[6,4,2]→ 正确 - B选项:包含
0→ 错误(range未生成0) - C选项:元素不符 → 错误
- D选项:错误(A正确)