Python列表没有分配变量

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)

为什么某些列表方法可以在硬编码/非变量列表中工作,而其他列表方法可以?

我并没有真正使用它,这更多的是个人知识和对语言的理解而不是有用.

sas*_*llo 6

  1. 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)

  2. [5, 6, 7, 8, 9][2] - 一切都应该是因为它从0开始计算元素.它不是修改列表,它只是从列表中返回某个元素.

  3. [5, 6, 7, 8, 7].count(7)[5, 6, 7, 8, 7].index(8)显示预期的输出.第一个是列表中出现7的次数,第二个是数字8的索引(再次,计数从0开始).

因此,总而言之,硬编码列表的使用在您生成的所有示例中都表现得如预期.

  • @ranisalt [5,6,7,8,9] +范围(15,20)将做你想要的 (2认同)
  • 它不返回任何内容,因为它是对列表的操作。当您执行 'a.extend' 时,您将元素附加到 'a'。从概念上讲,让这个操作做两件事是不好的 - 返回扩展列表和扩展传递的列表。 (2认同)