加入两个列表的最佳方式是什么?

Var*_*yan 4 tcl

我有两个包含一些数据(数字数据或/和字符串)的列表?

那么在假设列表不包含子列表的情况下,我应该如何加入这两个列表.

什么是首选,为什么?

  1. set first [concat $first $second]

  2. lappend first $second

  3. append first " $second"

Don*_*ows 12

使用起来很好,concat在某些情况下甚至是高效的(它是8.4及之前的推荐技术,在以后的版本中也不算太差).但是,你的第二个选项lappend根本不起作用,并且版本append可以工作,但也会非常低效.

其他版本的工作:

# Strongly recommended from 8.6.1 on
set first [list {*}$first {*}$second]
Run Code Online (Sandbox Code Playgroud)
lappend first {*}$second
Run Code Online (Sandbox Code Playgroud)

从8.6.1开始推荐其中第一个的原因是编译器能够将其优化为直接的"列表连接"操作.