下面是一些代码: # 问题 9:Deep Reverse # 定义一个过程 deep_reverse,它将一个列表作为输入, # 并返回一个新列表,该列表是输入列表的深度反向。
# 这意味着它反转列表中的所有元素,如果其中任何一个元素是列表本身,则反转内部列表中的所有元素,一直向下。
# Note: The procedure must not change the input list.
# The procedure is_list below is from Homework 6. It returns True if
# p is a list and False if it is not.
def is_list(p):
return isinstance(p, list)
#For example,
def deep_reverse(n):
n.reverse()
for entry in n:
if is_list(entry):
entry.reverse()
deep_reverseA(entry)
return n
def deep_reverseA(n):
for entry in n:
if is_list(entry):
entry.reverse()
deep_reverseA(entry)
return n
p = [1, [2, 3, [4, [5, 6]]]]
print deep_reverse(p)
#>>> [[[[6, 5], 4], 3, 2], 1]
print p
#>>> [1, [2, 3, [4, [5, 6]]]]
q = [1, [2,3], 4, [5,6]]
print deep_reverse(q)
#>>> [ [6,5], 4, [3, 2], 1]
print q
#>>> [1, [2,3], 4, [5,6]]
我的问题是,一旦我运行代码,p 和 q 的值就会改变。我怎样才能让他们不改变。我知道在 python 中索引是连接的,所以如果 indexA = indexB 并且您更改 indexA 那么 indexB 将会更改。这就是我在解决这个问题时遇到的问题。