'Nonetype'对象没有属性'insert',无法理解为什么

时间:2019-10-13 23:17:34

标签: python

我正在尝试列出一个列表,仅反转中间元素,而不是第一个和最后一个。我一直遇到一个nonetype错误,不明白为什么。

def reverse_middle(nums):
    a = nums[0]
    b = nums[-1]
    interior = nums
    interior.pop()
    interior.pop(0)
    final = interior.reverse()
    final.insert(0, a)
    final.append(b)
    return final

2 个答案:

答案 0 :(得分:1)

list的reverse方法会反转列表,但不会返回已反转的列表,而会返回None:就地进行反转。

def reverse_middle(nums):
    a = nums[0]
    b = nums[-1]
    interior = nums
    interior.pop()
    interior.pop(0)
    interior.reverse()
    final = interior
    final.insert(0, a)
    final.append(b)
    return final

要获得更简洁的代码,请使用以下代码:

def reverse_middle(nums):
    a = nums[0]
    b = nums[-1]
    interior = nums[1:-1]
    interior.reverse()
    final = [a] + interior + [b]
    return final

更简洁

def reverse_middle(nums):
    interior = nums[1:-1]
    interior.reverse()
    return [nums[0]] + interior + [nums[-1]]

答案 1 :(得分:0)

interior.reverse()就地执行操作(即内部颠倒了),并且不返回任何内容final

这就是为什么,最终是“无”。没有对象没有称为insert的方法。