Вы путаете строковое представление списка с его представлением в памяти.Список в памяти - это просто упорядоченный список непересекающихся элементов.Если вам нужно «красиво напечатать» его (обычно для вывода на терминал), сделайте из него строку и затем выведите ее.Самый простой способ сделать строку в вашем случае - это использовать [join]
, как уже предлагалось.
Другими словами, не обманывайтесь тем, что код
set L [list 1 2 3]
puts $L
выводит «1 2 3»: это не означает, что «список хранится в виде строки с разделенными пробелами элементами».Это просто строковое представление списка по умолчанию, используемое Tcl, когда вы просите его неявно создать строку из списка, передав этот список в [puts]
, который ожидает строковое значение.( NB Строго говоря, «ожидает, что строковое значение» неверно по отношению к внутренним элементам Tcl, но давайте пока проигнорируем это.)