在Python中旋转具有不同结果的第一个元素

时间:2018-10-18 16:58:47

标签: python arrays list element

我在Python中有一个作业(使用Jupyter)。

这里是:

enter image description here

我需要在第27行制作一个名为 weird 的列表,如果执行xrotateR(weird [0,则为[[3,1,2],[3,1,2]] ])功能。

我该怎么做?

xrotateR函数是:

def xrotateR(lst) :
    c=lst[-1:]
    lst[:]=c+lst[0:-1]

谢谢!

1 个答案:

答案 0 :(得分:2)

他们希望您将相同的列表(实际上是内存中的同一对象,而不仅仅是相等的列表)放在列表​​列表中。

>>> def xrotateR(lst) :
...     c=lst[-1:]
...     lst[:]=c+lst[0:-1]
... 
>>> weird = [[1, 2, 3]]*2
>>> weird
[[1, 2, 3], [1, 2, 3]]

我们可以确认weird的元素不仅与is运算符相同,而且是相同的对象。

>>> weird[0] is weird[1]
True

因此,xrotateR将使weird的两个条目都发生突变。

>>> xrotateR(weird[0])
>>> weird
[[3, 1, 2], [3, 1, 2]]

举例来说,实例化这样的列表是common bug

编辑:尝试Python Tutor获得他们要求的可视化效果,它将为您绘制正确的图表。只要确保您了解它们即可。 ;)