有点奇怪的要求。
假设我有以下列表:
[1,2,3]
我希望通过每个索引获得数字9,以获得以下列表列表:
[[9,1,2,3],
[1,9,2,3],
[1,2,9,3],
[1,2,3,9]]
知道如何轻松完成这项工作吗?还有,这种东西有名字吗?
编辑:我意识到我可以做以下事情:
lists=[]
for i in range(4):
new_list = [1,2,3]
new_list.insert(i,9)
lists+=[new_list]
但我认为这不优雅。想法?
答案 0 :(得分:6)
您可以执行类似
的操作l = [1,2,3]
new_l = [l[:i] + [9] + l[i:] for i in range(len(l) + 1)]
答案 1 :(得分:3)
for循环怎么样:
l = [1,2,3]
res = []
for i in xrange(len(l)+1):
l2 = l[:]
l2.insert(i,9)
res.append(l2)
这是我想到的另一件事:
l = [1,2,3]
q = [l[:] for _ in range(len(l)+1)]
map(lambda(x):x.insert(q.index(x),9), q)
然后q
将包含您的列表:
print q
[9, 1, 2, 3], [1, 9, 2, 3], [1, 2, 9, 3], [1, 2, 3, 9]]
答案 2 :(得分:0)