代码之家  ›  专栏  ›  技术社区  ›  Aamir

在Python中修改列表内容

  •  3
  • Aamir  · 技术社区  · 15 年前

    我有这样一个清单:

    list = [[1,2,3],[4,5,6],[7,8,9]]
    

    我想以编程方式在列表中每个值的开头追加一个数字,比如说数字是9。我希望新列表如下所示:

    list = [[9,1,2,3],[9,4,5,6],[9,7,8,9]]
    

    我如何在Python中实现这一点?我知道这是一个非常琐碎的问题,但我找不到一个方法来完成这件事。

    5 回复  |  直到 10 年前
        1
  •  16
  •   Alex Martelli    15 年前
    for sublist in thelist:
      sublist.insert(0, 9)
    

    不要 使用内置名称,例如 list 对于你自己的东西,这只是一个正在发生的愚蠢的事故——给你的东西打电话 mylist thelist 诸如此类, .

    编辑 :操作说明如何插入>1项在每个子列表的开头,让我指出,最有效的方法是将多个项分配给每个子列表的一个片段(大多数列表变体可以被视为片段分配的可读替代品;-),即:

    for sublist in thelist:
      sublist[0:0] = 8, 9
    

    sublist[0:0] 空切片位于 sublist ,并通过为其分配项目,将项目插入到该位置。

        2
  •  12
  •   cobbal    15 年前
    >>> someList = [[1,2,3],[4,5,6],[7,8,9]]
    >>> someList = [[9] + i for i in someList]
    >>> someList
    [[9, 1, 2, 3], [9, 4, 5, 6], [9, 7, 8, 9]]
    

        3
  •  2
  •   Vinko Vrsalovic    15 年前

    就地修改列表 :

    >>> numberlists = [[1,2,3],[4,5,6]]
    >>> for numberlist in numberlists:
    ...  numberlist.insert(0,9)
    ...
    >>> numberlists
    [[9, 1, 2, 3], [9, 4, 5, 6]]
    

    [numberlist.insert(0,9) for numberlist in numberlists]
    

    创建一个新列表

    newnumberlists = [[9] + numberlist for numberlist in numberlists]
    
        4
  •  2
  •   mechanical_meat nazca    15 年前

    如果你要做很多准备工作,
    deques *代替列表:

    >>> mylist = [[1,2,3],[4,5,6],[7,8,9]]
    
    >>> from collections import deque
    >>> mydeque = deque()
    >>> for li in mylist:
    ...   mydeque.append(deque(li))
    ...
    >>> mydeque
    deque([deque([1, 2, 3]), deque([4, 5, 6]), deque([7, 8, 9])])
    >>> for di in mydeque:
    ...   di.appendleft(9)
    ...
    >>> mydeque
    deque([deque([9, 1, 2, 3]), deque([9, 4, 5, 6]), deque([9, 7, 8, 9])])
    

    *Deques是堆栈和队列的泛化(名称读作“deck”,是“双端队列”的缩写)。deque支持线程安全、内存高效的附加和弹出,在deque的任意一侧,在任意方向上的O(1)性能大致相同。


    为了爱所有枯燥丑陋的事物,
    请不要 在您喜欢的数据结构后命名变量。

        5
  •  0
  •   stefanB    15 年前
    #!/usr/bin/env python
    
    def addNine(val):
        val.insert(0,9)
        return val
    
    if __name__ == '__main__':
        s = [[1,2,3],[4,5,6],[7,8,9]]
        print map(addNine,s)
    

    输出:

    [[9, 1, 2, 3], [9, 4, 5, 6], [9, 7, 8, 9]]