对于我要进行的Python考试的一部分,我必须编写给定代码的输出,因为它将在Python shell中执行。
我无法理解这个问题:
>>> print(Ttrain)
Age Age_Group
0 0 Missing
1 10 Young
2 20 Adult
3 30 Adult
4 40 Adult
5 50 Middle_Aged
6 60 Middle_Aged
7 70 Old
我对这个问题的理解是针对每个alist = [1] * 10 #[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
for i in range(1, 10): #from 1 up to and not including 10 - 1 2 3 4 5 6 7 8 9
alist[i] += alist[i-1]
print(alist)
,1 - 9,i in range(1, 10)
中i
的索引等于alist
的索引+索引i
。我的原始输出是:
i-1
实际输出是:
[1, 2, 5, 7, 9, 11, 13, 15, 17]
为了尝试了解发生了什么,我尝试用[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
替换[i-1]
并获得输出:
[i]
我尝试过各种书面输出来尝试匹配正确的答案,但我似乎无法找到正确的方法。如果有人能帮我理解[1, 2, 2, 2, 2, 2, 2, 2, 2, 2]
发生的事情,或者我的理解在别处被误解,我会非常感激。
答案 0 :(得分:1)
因此,您的循环以1
值列表开头。然后运行一个循环,将索引的值与前面索引的值相加。
要么您错过了值“实时”,所以每次引用alist[i]
时,都会生成当前对象,或你将i
误解为要求的值,而不仅仅是列表的索引。
我添加了一些印刷语句来说明实际情况:
>>> alist = [1] * 4 # smaller for demo conciseness
>>> for i in range(1, 4):
... print(f' --- {i} ---')
... print(f'before {alist}')
... print(' ' * (4 + (i * 3)), 'i -^')
... print(f'alist[i]: {alist[i]}, alist[i-1]: {alist[i-1]}')
... alist[i] += alist[i-1]
... print(f'after: {alist}\n')
...
--- 1 ---
before [1, 1, 1, 1]
i -^
alist[i]: 1, alist[i-1]: 1
after: [1, 2, 1, 1]
--- 2 ---
before [1, 2, 1, 1]
i -^
alist[i]: 1, alist[i-1]: 2
after: [1, 2, 3, 1]
--- 3 ---
before [1, 2, 3, 1]
i -^
alist[i]: 1, alist[i-1]: 3
after: [1, 2, 3, 4]
注意alist[i-1]
值如何反映前一次迭代中存储的结果;您没有添加1 + 1
,而是要添加1 + previous result
。