有人能告诉我这些数字消失了吗?

时间:2015-12-13 15:31:55

标签: python list python-3.x

为什么以下代码打印11238而不是11235?

num_list = [1,1,2,3,5,8,13]
for i in range(5):
    print(num_list[num_list[i]])

13不在索引5中为什么? 5和13哪里消失了?

3 个答案:

答案 0 :(得分:0)

因为您将num_list[i]的结果作为索引传递给num_list,因此在循环结束时num_list[4] == 5num_list[5] == 8

请注意,range(5)会生成从04的数字。

如果您想以最pythonic的方式打印列表的前5个数字,可以使用简单的切片:

>>> print(num_list[:5])
[1, 1, 2, 3, 5]

或者使用拆包将它们从括号中打印出来:

>>> print(*num_list[:5])
1 1 2 3 5

答案 1 :(得分:0)

你的循环说:

print (num_list[num_list[0]])
print (num_list[num_list[1]])
print (num_list[num_list[2]])
print (num_list[num_list[3]])
print (num_list[num_list[4]])

这意味着:

print (num_list[1]) # since num_list[0] holds 1
print (num_list[1]) # since num_list[1] holds 1
print (num_list[2]) # since num_list[2] holds 2
print (num_list[3]) # since num_list[3] holds 3
print (num_list[5]) # since num_list[4] holds 5

表示:

print (1) # since num_list[1] holds 1
print (1) # since num_list[1] holds 1
print (2) # since num_list[2] holds 2
print (3) # since num_list[3] holds 3
print (8) # since num_list[5] holds 8

答案 2 :(得分:0)

因为您的代码错误,所以如果您希望结果是11235。 它应该是这样的:

num_list = [1,1,2,3,5,8,13]
for i in range(5):
print (num_list[i])

循环(num_list[num_list[i]])会给你: num_list[1]num_list[1]num_list[2]num_list[3] num_list[5] 等于8