Arrays 基于第一个元素中的字符串长度从数组中删除元素的方法

Arrays 基于第一个元素中的字符串长度从数组中删除元素的方法,arrays,indexing,lua,insert,Arrays,Indexing,Lua,Insert,假设我有一个问题库, qbank={q1,q2,q3,…,qN} 其中的问题完全是字符串值,比如, q1={问题,resp1,resp2,resp3,答案} 问题是,如果问题q1的第一个字符串元素填充了太多的字符40,我希望将其移动到一个名为QBankBigger的表中。 我想这需要一个索引,但问题是,我也想从原始qbank中删除问题数组 如何执行此操作?使用if函数计算第一项是否大于或等于40 qbanklarger=[] if len(q1[1])>=40: qbanklarger

假设我有一个问题库, qbank={q1,q2,q3,…,qN} 其中的问题完全是字符串值,比如, q1={问题,resp1,resp2,resp3,答案} 问题是,如果问题q1的第一个字符串元素填充了太多的字符40,我希望将其移动到一个名为QBankBigger的表中。 我想这需要一个索引,但问题是,我也想从原始qbank中删除问题数组


如何执行此操作?

使用if函数计算第一项是否大于或等于40

qbanklarger=[]
if len(q1[1])>=40:
  qbanklarger.append(q1[1])
  np.delete(q1, q1[1])

这应该是可行的。

理想情况下,首先不要在qbank中添加超过40个字符的问题。马上把它放进冰箱里

所以你可以这样做:

local Questions = {long = {}, short = {}}
function Questions:add(q)
  if #q.question >= 40 then
    table.insert(self.long, q)
  else
    table.insert(self.short, q)
  end
end
或者,如果你想按计划进行,你必须从qbank中删除任何长问题,并将其添加到QbaseBigger中。 看

实际上,将它们排序到新表中比从qbase中删除更有效。因为删除元素后,table.remove需要向下移动以下所有元素

local buffer = {} -- this will be our new qbase with only short questions
for i,v in ipairs(qbase) do
  if #v.question >= 40 then
    table.insert(qbaselarger, v)  -- put long questions into qbaselarger
  else
    table.insert(buffer, v) -- and short questions into the buffer
  end
end
qbase = buffer -- now refer qbase to the buffer
buffer = nil  -- we don't need buffer anymore

带numpython数组的Python代码如何帮助他编写Lua代码?请仔细阅读问题ynp.delete需要一个切片或索引作为第二个参数,顺便说一句。逻辑q1[1]后面是一个字符串。此外,目标不是从q1中删除q1[1],而是在q1[1]过长时删除q1。当然,qbank中的所有元素都需要这样做