P121: Insert an element at a given position into a list

往列表中按指定位置插入元素。照例测试用例:

from python99.lists.p121 import insert_at, insert_at_mutable def test_insert_at(): assert insert_at([1, 2, 3, 4, 5, 6], 2, 'a') == [1, 'a', 2, 3, 4, 5, 6] assert insert_at([1, 2, 3, 4, 5, 6], 1, 'a') == ['a', 1, 2, 3, 4, 5, 6] assert insert_at([1, 2, 3, 4, 5, 6], 7, 'a') == [1, 2, 3, 4, 5, 6, 'a'] def test_insert_at_mutable(): assert insert_at([1, 2, 3, 4, 5, 6], 2, 'a') == [1, 'a', 2, 3, 4, 5, 6] assert insert_at([1, 2, 3, 4, 5, 6], 1, 'a') == ['a', 1, 2, 3, 4, 5, 6] assert insert_at([1, 2, 3, 4, 5, 6], 7, 'a') == [1, 2, 3, 4, 5, 6, 'a']

Python内建的数据类型list已经提供了按位置索引直接访问元素和切片功能(Ninety-Nine Problems原来是为Prolog教学演示设计的,Prolog中的list没有切片功能,也没有索引访问功能)。

  1. 首先,按指定位置将列表切分为两段
  2. 然后,将要插入的元素放置在两段列表之间
  3. 最后,将两段列表及插入元素按序拼接起来

代码实现:

# Insert an element at a given position into a list # index is 1-based def insert_at(l,index, value): if index <= 1: return [value] + l if index > len(l): return l + [value] return l[:index-1] + [value] + l[index-1:] def insert_at_mutable(l, index, value): l.insert(index-1, value) return l

results matching ""

    No results matching ""