python - 如何在不更改原始代码的情况下编写以下代码?

标签 python deque

我的任务是编写一段代码,循环移动四个变量(a、b、c、d)的值。我不允许使用多个新变量来完成任务。例如,如果 (a,b,c,d) 的变量值最初分别为 11, 21, 31 和 41,则 (a,b,c,d) 的最终值应为 41, 11, 21 和分别为 31 个。我也不允许更改原始代码。

# given code
a = 11  
b = 21 
c = 31 
d = 41 
print('before rotation: a =', a, 'b =', b, 'c =', c, 'd =',d) 

# the code that i wrote
import collections

var = collections.deque([a, b, c, d])  
var.rotate(1)  # to the right

# given code
print('after rotation: a =', a, 'b =', b, 'c =', c, 'd =', d) 

我希望输出是:

before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 41 b = 11 c = 21 d = 31

但是我得到了:

before rotation: a = 11 b = 21 c = 31 d = 41
after rotation: a = 11 b = 21 c = 31 d = 41

最佳答案

您正在旋转 var,这是一个 deque 对象,其值与 ab 的值完全分开>、cd,用于初始化 var,因此对 var 的值进行了更改不会反射(reflect)在 abcd 的值上。

您可以将 var 解压为可迭代对象,将其分配给 abcd 作为元组:

a, b, c, d = var

或者,您可以通过对旋转的元组进行硬编码来简单地自行旋转元组:

a, b, c, d = d, a, b, c

关于python - 如何在不更改原始代码的情况下编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631315/

相关文章:

Python Neo4j self 引用

python - 集合真的比列表快吗?

python - Dask:非常低的 CPU 使用率和多线程?这是预期的吗?

c - 在没有哨兵的情况下反转循环双端队列

c++ - STL 双端队列 : keep minimum size

java - Collections 层次结构中的 Deque 接口(interface)

python - Flask 演示应用程序无法运行

python - 根据数据库正确验证 HTML POST

c++ - 删除 vector 和双端队列中项目的时间复杂度

Java Deque 不使用任何现有的类(如 LinkedList)?