【发布时间】:2020-12-10 12:08:11
【问题描述】:
我有一个如下所示的嵌套列表:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我想将每个内部列表中的每个元素复制 3 并将它们并排放置:
[[1, 1, 1, 2, 2, 2, 3, 3, 3], [4, 4, 4, 5, 5, 5, 6, 6, 6], [7, 7, 7, 8, 8, 8, 9, 9, 9]]
这是我目前的解决方案:
from itertools import repeat
x2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
ls = []
for i in x2:
ls.append([x for item in i for x in repeat(item, 3)])
ls
>>> [[1, 1, 1, 2, 2, 2, 3, 3, 3],
[5, 5, 5, 6, 6, 6, 7, 7, 7],
[9, 9, 9, 10, 10, 10, 11, 11, 11],
[4, 4, 4, 8, 8, 8, 3, 3, 3]]
有什么方法可以让它更快?
【问题讨论】:
-
如果你使用 lambda x 函数,有一种方法可以使用 np.repeat()!首先使用'f = lambda x:np.repeat(x2,3)'。然后使用 'np.apply_along_axis(f,1,x)' 你会得到同样的答案。
-
如果您的代码没有任何问题并且您正在寻求改进; Code Review 是正确的地方,而不是 Stack Overflow。
-
哦,抱歉,这是我第一次提交问题,谢谢您的意见,下次我会这样做。
-
谢谢,似乎也可以:)
-
这可以通过单行列表理解
dupes = [[val for val in sublist for i in range(3)] for sublist in x2]来完成。不知道它是否更快。
标签: python itertools nested-lists