gpt4 book ai didi

python - 在python中向列表中插入一个元素

转载 作者:行者123 更新时间:2023-12-01 04:24:12 25 4
gpt4 key购买 nike

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

[['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, ls):
... output = [ls[:] for _ in xrange(len(ls) + 1)]
... for i, sublist in enumerate(output):
... output[i].insert(i, j)
... return output
...
>>> 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[:i] + [j] + ls[i:] for i in xrange(len(ls) + 1)]
...
>>> 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']]

关于python - 在python中向列表中插入一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com