Python 为什么这个函数会产生(0,0,0,0)

Python 为什么这个函数会产生(0,0,0,0),python,python-3.x,Python,Python 3.x,我有这个功能 my_list = [1,2,3,4,5] my_new_list = [] for num in my_list: my_new_list.append(num-my_list[num-1]) print(my_new_list) 我不明白[num-1]在索引返回0,0,0,0方面做了什么, 有人能解释一下这一点吗,因为我不明白为什么会出现这种结果。当循环处理列表的第一个元素时,num是1,所以num-1是0。然后将其用作列表中的索引,my_list[0]为1。减去1-

我有这个功能

my_list = [1,2,3,4,5]
my_new_list = []
for num in my_list:
    my_new_list.append(num-my_list[num-1])
print(my_new_list)
我不明白[num-1]在索引返回0,0,0,0方面做了什么,
有人能解释一下这一点吗,因为我不明白为什么会出现这种结果。

当循环处理列表的第一个元素时,num是1,所以num-1是0。然后将其用作列表中的索引,my_list[0]为1。减去1-1返回0,这会被推到我的新列表中


同样的情况也会发生在每个元素上,因为每个元素的值都是其索引+1,所以每次通过循环都会得到0。

my_list[num-1]从列表中获取第一个元素,即1

    my_list = [1,2,3,4,5]
my_new_list = []
for num in my_list:
    my_new_list.append(num-my_list[num-1])
    print(num,my_list[num-1])
print(my_new_list)
您可以运行此代码,输出为: 1 1 2 2 3 3 4 4 5 5 [0,0,0,0,0,0]


至于my_列表中的num,则从列表中选取每个元素。

当执行此循环时,第一次给出:

    my_list = [1,2,3,4,5]
my_new_list = []
for num in my_list:
    my_new_list.append(num-my_list[num-1])
    print(num,my_list[num-1])
print(my_new_list)
我的新列表。附录1-我的新列表[1-1]等于我的新列表。附录1-我的新列表[0]等于我的新列表。附录1-1

第二次:

我的新列表。附录2-我的新列表[2-1]等于我的新列表。附录2-我的新列表[1]等于我的新列表。附录2-2

第三次:

我的新列表。附录3-我的新列表[3-1]等于我的新列表。附录3-我的新列表[2]等于我的新列表。附录3-3


以此类推……

结果是可以理解的,在您的循环中,my_num[num-1]从my_列表中减去,其内容为1,2,3,4,5

当num是my_list[0]==1时,第一次迭代,my_list[1-1]=my_list[0]的值。因此,它实际上等同于减去列表中的各个元素,从而得到[0,0,0,0,0]


希望这有助于您理解以下行为:

只是用调试器运行代码?检查变量?你使用开发控制台了吗?我同意@trincot。这是一个非常明显的问题,您不必询问是否会在每个循环中使用dev consolead和print语句,以便查看发生了什么。