首页 > 解决方案 > 单行修改列表中的所有元素?

问题描述

我正在寻找这个 Python 代码的 Lua 等效项(如果可能的话):

>>> ["prefix" + suffix for suffix in ["1","2","3"] ]
['prefix1', 'prefix2', 'prefix3']

这是我目前拥有的 Lua 代码,我想知道是否有更紧凑的方式来编写代码:

function foo (prefix, suffices)
  local newList = {}
  for k,v in pairs(suffices) do
    table.insert(newList, prefix .. v)
  end
  return newList
end

a = foo( "prefix", {"1","2","3"} );

标签: pythonlua

解决方案


没有更短的方法可以做到这一点。

function prepend_prefix(prefix, suffices)
  local newList = {}
  for _,v in ipairs(suffices) do
    newList[#newList+1] = string.format("%s%s", prefix, v)
  end
  return newList
end

你为什么要在每个项目中保留这些多余的前缀?为什么不用一些“特殊”表(模型)来包装它并公开一个为您预先设置的 get 方法?

问题是,当您保留不同的字符串时(它们是否几乎相同并不重要),您的内存使用量将会增加。


推荐阅读