如何将列表转换为以其元素为列表的列表?

时间:2019-06-11 22:59:54

标签: list tcl

例如,在Tcl中有一个类似的列表, {“ A”“ B”}

,我想将其转换为一个列表,并将其每个元素作为一个列表, {{A} {B}}

我尝试了以下代码将其每个元素映射到列表。

set List {"A" "B"}
set List [lmap s $List {list $s}]
puts $List

我希望输出为

  

{A} {B}

但实际输出是

  

A B

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

您要查找的表单是非规范化列表;这不是Tcl的列表操作将要产生的(因为它们仅在需要时才添加花括号),而是可以使用的一种。正式而言,这意味着您要寻求的是 不推荐! !与软件作斗争不是一个好计划!

但是有可能。如果您知道元素的表现相对良好(大约,如果它们完全具有括号,则它们内部具有平衡的括号),则可以使用join和{{1} }:

format

这适用于大多数列表,但请注意,并非全部如此:

set List {"A" "B"}
set List [join [lmap x $List {format "{%s}" $x}]]

此问题的变通方法越来越失真,这就是为什么建议您仅使用Tcl的内置列表序列化机制,该机制处理任意元素的内容(并经过测试可以这样做),而不是在乎如何简单的单词被格式化。