ran*_*alt 2 python methods list hardcode
好吧,我可以轻松地使用这段代码而不会出现Python错误:
>>>> a = range(5, 10)
>>>> b = range(15, 20)
>>>> a.extend(b)
>>>> a
[5, 6, 7, 8, 9, 15, 16, 17, 18, 19]
Run Code Online (Sandbox Code Playgroud)
我也可以使用这种方法,而不使用b:
>>>> a = range(5, 10)
>>>> a.extend(range(15, 20))
>>>> a
[5, 6, 7, 8, 9, 15, 16, 17, 18, 19]
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚为什么在这种情况下不会发生同样的事情:
>>>> [5, 6, 7, 8, 9].extend(range(15, 20))
>>>>
Run Code Online (Sandbox Code Playgroud)
不a应该和上面的列表一样吗?我只看到了我对这个状态进行硬编码的不同之处.我真的可以理解,硬编码列表不能修改,而不是变量或其他东西,但......
>>>> [5, 6, 7, 8, 9][2]
7
Run Code Online (Sandbox Code Playgroud)
这让我感到惊讶.更奇怪的是:
>>>> [5, 6, 7, 8, 7].count(7)
2
>>>> [5, 6, 7, 8, 7].index(8)
3
Run Code Online (Sandbox Code Playgroud)
为什么某些列表方法可以在硬编码/非变量列表中工作,而其他列表方法可以?
我并没有真正使用它,这更多的是个人知识和对语言的理解而不是有用.
extend不返回值.因此,印刷a.extend(b)将是None.因此,如果你有a = [5, 6, 7, 8, 9].extend(range(15, 20))和打印a它会显示None.解决它的方法是连接列表a = [5, 6, 7, 8, 9] + range(15, 20)
[5, 6, 7, 8, 9][2] - 一切都应该是因为它从0开始计算元素.它不是修改列表,它只是从列表中返回某个元素.
[5, 6, 7, 8, 7].count(7)并[5, 6, 7, 8, 7].index(8)显示预期的输出.第一个是列表中出现7的次数,第二个是数字8的索引(再次,计数从0开始).
因此,总而言之,硬编码列表的使用在您生成的所有示例中都表现得如预期.