強制下標列表總是列表?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />這是一段代碼片段:
A = {“A”,“B”,“C”,“d”,123};
sub1 = list(1,3,5);
sub2 = list(1);
顯示(一個[SUB1]);
顯示(一個[SUB2]);
輸出:
a [sub1] = {“A”,“C”,123};
a [sub2] =“A”;
是否有某種方式使用任意數量的元素下載列表,並始終將輸出作為列表?
Re:強制下標列表總是列表?嗨馬丁,
這是我們為JMP 13“修復”的事情。我將“修復”放在引號中,因為某些遺留腳本可能依賴於舊行為,並認為修復是一個中斷。如果這被證明是一個大問題,我們可能必須找到一個替代方案。
一世很高興看到你的消息支持修復的想法。
Re:強制下標列表總是列表?這是一個更好的列表列表。
A = {{“A”},{“B”},{“C”},{“d”},{123}};
sub1 = list(1,3,5);
sub2 = list(1);
ForceList = Function({forceme},
如果(Is List(forceme),forceme,EvalList(List(forceme)))
);
SubscriptList = Function({inlist,subscriptlist},
if(N items(subscriptlist)== 1,
EvalList(列表(INLIST [subscriptlist]))
,
INLIST [subscriptlist]
)
);
輸出:
show(ForceList(a [sub1]));
show(ForceList(a [sub2]));
{{“A”},{“C”},{123}};
{“一個”};
show(SubscriptList(a,sub1));
show(SubscriptList(a,sub2));
{{“A”},{“C”},{123}};
{{“一個”}};
Re:強制下標列表總是列表?是的,這就是我的想法。我寫了一個簡單的“輔助函數”,我認為我可以在下載列表中使用它。謝謝!
ForceList = Function({forceme},
如果(Is List(forceme),forceme,EvalList(List(forceme)))
);
show(ForceList(a [sub1]));
show(ForceList(a [sub2]));
輸出:
{“A”,“C”,123};
{“一個”};
Re:強制下標列表總是列表?當您的下標只有一個值時,它總是返回單個值。如果您的下標是具有多個值的列表,則它將以列表的形式返回所有值。
為了解決這個問題,你需要一個If語句來檢查你的下標列表中有多少值,如果下標只有一個值,則包裝返回值。
這是我放在一起的一個例子:
一個 = { “一個” , “B” , “C” , “d” , 123 } ;
SUB1 = 名單 ( 1 , 3 ,五 ) ;
SUB2 = 名單 ( 1 ) ;
EVAL ( Eval Expr ( indicesList = { EXPR ( SUB1 ) , EXPR ( SUB2 )} ) ) ;
對於 ( 一世 = 1 ,一世 <= N項 ( indicesList ) ,一世 ++,
如果 ( N項 ( indicesList [ 一世 ] ) > 1 ,
溫度 = 一個 [ indicesList [ 一世 ]] ,
溫度 = EVAL ( Eval Expr ( 名單 ( EXPR ( 一個 [ indicesList [ 一世 ]] ) ) ) )
) ;
節目 ( 溫度 ) ;
) ;