我在Python中有一个作业(使用Jupyter)。
这里是:
我需要在第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获得他们要求的可视化效果,它将为您绘制正确的图表。只要确保您了解它们即可。 ;)