我在lua上工作,循环了两个表,想从里面新建一个表,里面没有nil值。所以这基本上是一个交叉乘积。例如
{1,2,3} x {3,4,5} -> {1*3,1*4,1*5,2*3,2*4,2*5,3*3,3*4,3*5}
当然,这并不难做到。
t = {1,2,3}
s = {3,4,5}
xs = {}
q = 1
for i,h in ipairs(t) do
for j,k in ipairs(s) do
xs[q] = h * k
q = q + 1
end
end
我们保留一个计数器q,每次迭代加1。这样就可以了。然而,没有计数器也可以吗?我可以只用i和j来填充x,使x中没有空隙吗?
t = {1,2,3}
s = {3,4,5}
xs = {}
for i,h in ipairs(t) do
for j,k in ipairs(s) do
q = f(i,j) -- <- I want to know if f is possible to write
xs[q] = h * k
end
end
我想说不能,至少我自己不容易找到。
EDIT: 如果允许我使用s的大小,这是可能的。
s = {1,2,3}
t = {4,5,6}
xs = {}
for i,h in ipairs(s) do
for j,k in ipairs(t) do
q = i + (j - 1) * #t
xs[q] = h * k
end
end
您可以使用 table.insert
在您的情况下,没有理由指定索引。
s = {1,2,3}
t = {4,5,6}
xs = {}
for i,h in ipairs(s) do
for j,k in ipairs(t) do
table.insert(xs, h * k)
end
end
for _, v in ipairs(xs) do
print(v)
end
关于资源 insert
: