{{1 2 3} {4}} {7 8 9}}のようなリストがあります。ネストされたリストのそれぞれの最初の要素で作られたリスト:{1 4 7}。私は 'foreach'を使っていくつかの行でそれを行う方法を知っていますが、それはよりエレガントなやり方、あるいはより良いことに、それを行う組み込み関数ですか?ありがとう、tcl内のリストのリストから最初の要素のリストを作成する
オマー。
{{1 2 3} {4}} {7 8 9}}のようなリストがあります。ネストされたリストのそれぞれの最初の要素で作られたリスト:{1 4 7}。私は 'foreach'を使っていくつかの行でそれを行う方法を知っていますが、それはよりエレガントなやり方、あるいはより良いことに、それを行う組み込み関数ですか?ありがとう、tcl内のリストのリストから最初の要素のリストを作成する
オマー。
あなたはTclの8.6を使用している場合は、リストのマッピングを行い、あなたの仕事のために使用することができるlmap
コマンドがあります:
%set a {{1 2 3} {4 5 6} {7 8 9}}
{1 2 3} {4 5 6} {7 8 9}
%lmap x $a {lindex $x 0}
1 4 7
lmap
コマンドの繰り返し処理がリスト$a
を通じて、現在処理中のリストを割り当て項目を指定された変数(この例ではx
)に変更し、コマンド(例ではlindex $x 0
)を呼び出します。
あなたが最初の要素を検索することがわかっているので、foreachを使用するための最適なソリューションです。複雑さはあなたの場合O(1)になります。固定されているインデックスの最初の値にアクセスするだけでいいからです。