解释打印测试列表

2024-06-11 09:49:14 发布

您现在位置:Python中文网/ 问答频道 /正文

你能给我详细解释下半部分的计划吗?我知道input\u list[0]=10是一个变量,它的范围为1-10,但是列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][10, 2, 3, 4, 5, 6, 7, 8, 9][10, 5, 5]从何而来?你知道吗

def list_changer(input_list):
    input_list[0] = 10

    input_list = range(1, 10)
    print(input_list)
    input_list[0] = 10
    print(input_list)

>>> test_list = [5, 5, 5]
>>> list_changer(test_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print test_list
[10, 5, 5]

事先谢谢你的帮助。你知道吗


Tags: test列表inputdefrangelist计划print
2条回答

您应该注意到有两个不同的变量名为input_list

  1. 第一个被全局声明为test_list,由[5,5,5]初始化,并作为名为input_list的参数传递给函数list_changer

  2. 第二个在函数list_changer中本地声明为,由range(1,10)初始化并重写第一个函数的名称。

您可以通过每次打印值时打印id(input_list)来检查这一点。你知道吗

id试试这个

def list_changer(input_list):
    input_list[0] = 10
    print id(input_list)
    input_list = range(1, 10)
    print(input_list)
    input_list[0] = 10
    print(input_list)


>>>test_list = [5, 5, 5]
>>>print id(test_list)
>>>list_changer(test_list)
>>>print test_list

#output

139794448752512
139794448752512
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 5, 5]

由此我们可以看出test_listid1st行中的input_list相同功能。那个两者都引用[5,5,5]。因此对test_listinput_list(第1行)的更改将影响引用它的所有变量。1st行是[5,5,5]发生更改的地方。你知道吗

然后input_list = range(1, 10)。这次input_list引用range(1, 10)。仍然[10,5,5]引用变量test_list。你知道吗

希望这有帮助

相关问题 更多 >