反转Python数组的意外结果

时间:2017-08-06 05:14:30

标签: python list function

当我写这段代码时:

f=['a','b','c',['d','e','f']]
def j(f):
    p=f[:]
    for i in range(len(f)):
        if type(p[i]) == list:
            p[i].reverse()
    p.reverse()
    return p
print(j(f), f)

我希望结果如下:

  

[['f','e','d'],'c','b','a'] ['a','b','c',['d','e ','f']]

但我看到的结果是:

  

[['f','e','d'],'c','b','a'] ['a','b','c',['f','e ','d']]

为什么呢?我怎样才能编写出符合我期望的代码呢?

1 个答案:

答案 0 :(得分:-1)

reverse修改了列表,你实际上想要创建一个新列表,所以你不要反转你已经得到的列表,如下所示:

def j(f):
    p=f[:]
    for i in range(len(f)):
        if type(p[i]) == list:
            p[i] = p[i][::-1]
    p.reverse()
    return p