在python中向列表中插入元素

在python中向列表中插入元素,python,Python,我正在尝试用python编写一个函数,该函数应采用以下两个参数作为输入:f('k',range(4)),并应返回以下内容: [['k', 0, 1, 2, 3], [0, 'k', 1, 2, 3], [0, 1, 'k', 2, 3], [0, 1, 2, 'k', 3], [0, 1, 2, 3, 'k']] 我尝试了以下方法,但出现了一些问题 def f(j,ls): return [[ls.insert(x,j)]for x in ls] 有人知道如何找到解决方案吗?list

我正在尝试用python编写一个函数,该函数应采用以下两个参数作为输入:f('k',range(4)),并应返回以下内容:

[['k', 0, 1, 2, 3], [0, 'k', 1, 2, 3], [0, 1, 'k', 2, 3], [0, 1, 2, 'k', 3], [0, 1, 2, 3, 'k']]
我尝试了以下方法,但出现了一些问题

def f(j,ls):
    return [[ls.insert(x,j)]for x in ls]
有人知道如何找到解决方案吗?

list.insert()
返回
None
,因为列表已更改到位。如果不想共享同一列表对象,则必须创建列表的副本:

def f(j, ls):
    output = [ls[:] for _ in xrange(len(ls) + 1)]
    for i, sublist in enumerate(output):
        output[i].insert(i, j)
    return output
您还可以使用切片生成新的子列表,并通过串联“插入”额外的元素;这样您就可以理解一个线性列表:

def f(j, ls):
    return [ls[:i] + [j] + ls[i:] for i in xrange(len(ls) + 1)]
演示:


这应该对你有用

def f(j,num):
    lst=[]
    for i in range(num+1):
        innerList=list(range(num))
        innerList[i:i]=j
        lst.append(innerList)

    return lst
演示:

输出:

[['k', 0, 1, 2, 3], [0, 'k', 1, 2, 3], [0, 1, 'k', 2, 3], [0, 1, 2, 'k', 3], [0, 1, 2, 3, 'k']]

@ImanK:它将生成一个
[None]
子列表的列表。请阅读
列表的文档。插入
,查看它返回的内容。
print f("j",4)
[['k', 0, 1, 2, 3], [0, 'k', 1, 2, 3], [0, 1, 'k', 2, 3], [0, 1, 2, 'k', 3], [0, 1, 2, 3, 'k']]