在for循环中从两个索引中新建一个索引。

问题描述 投票:1回答:1

我在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
lua
1个回答
1
投票

您可以使用 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:

https:/www.lua.orgpil19.2.html

© www.soinside.com 2019 - 2024. All rights reserved.