如何同时使用一个排序规则对多个Lua表进行有序排列?
- 内容介绍
- 文章标签
- 相关推荐
本文共计287个文字,预计阅读时间需要2分钟。
示例:使用以下代码创建两个表,并比较它们的元素,直到两个表中的第一个表满足特定条件。此函数不会修改任何表,并返回排序后的第二个表。
pythontable1=[2, 3, 1]table2=['a', 'b', 'c']
while table1 !=[1, 2, 3]: table1.sort() table2.sort()
print(排序后的table2:, table2)
例:table1 = {2,3,1} table2 = {a,b,c}
至
table1 = {1,2,3} table2 = {c,a,b} 此函数不会修改任何一个表,并返回根据第一个表排序的第二个表.您可以在第一个表中传递键的比较,就像在table.sort中一样.
local sort_relative = function(ref, t, cmp) local n = #ref assert(#t == n) local r = {} for i=1,n do r[i] = i end if not cmp then cmp = function(a, b) return a < b end end table.sort(r, function(a, b) return cmp(ref[a], ref[b]) end) for i=1,n do r[i] = t[r[i]] end return r end
例如:
local table1 = {2, 3, 1} local table2 = {"a","b","c"} local sorted = sort_relative(table1, table2) print(table.unpack(sorted))
结果是:
c a b
本文共计287个文字,预计阅读时间需要2分钟。
示例:使用以下代码创建两个表,并比较它们的元素,直到两个表中的第一个表满足特定条件。此函数不会修改任何表,并返回排序后的第二个表。
pythontable1=[2, 3, 1]table2=['a', 'b', 'c']
while table1 !=[1, 2, 3]: table1.sort() table2.sort()
print(排序后的table2:, table2)
例:table1 = {2,3,1} table2 = {a,b,c}
至
table1 = {1,2,3} table2 = {c,a,b} 此函数不会修改任何一个表,并返回根据第一个表排序的第二个表.您可以在第一个表中传递键的比较,就像在table.sort中一样.
local sort_relative = function(ref, t, cmp) local n = #ref assert(#t == n) local r = {} for i=1,n do r[i] = i end if not cmp then cmp = function(a, b) return a < b end end table.sort(r, function(a, b) return cmp(ref[a], ref[b]) end) for i=1,n do r[i] = t[r[i]] end return r end
例如:
local table1 = {2, 3, 1} local table2 = {"a","b","c"} local sorted = sort_relative(table1, table2) print(table.unpack(sorted))
结果是:
c a b

