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

这里是:

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

我需要在第27行上创建一个名为weird的列表,如果我对它执行xrotateR(weird [0])函数,则该列表应会导致[[3,1,2],[3,1,2]]。

我怎样才能做到这一点?

xrotateR函数为:

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


谢谢!

最佳答案

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

>>> 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获得他们要求的可视化效果,它将为您绘制正确的图表。只要确保您了解它们即可。 ;)

09-07 05:28