18
A
回答
34
set mylist {a b c}
puts $mylist
a b c
通过指数
删除set mylist [lreplace $mylist 2 2]
puts $mylist
a b
删除值
set idx [lsearch $mylist "b"]
set mylist [lreplace $mylist $idx $idx]
puts $mylist
a
4
比方说,你要替换元素 “B”:
% set L {a b c d}
a b c d
您可以通过任何更换第一器件和最后一个元素1:
% lreplace $L 1 1
a c d
15
另一种删除元素的方法是将其过滤掉。这种Tcl 8.5技术不同于其他地方提到的方法,因为它从列表中删除给定元素的全部。
set stripped [lsearch -inline -all -not -exact $inputList $elemToRemove]
它没有做的是通过嵌套列表进行搜索。这是Tcl没有努力深入理解您的数据结构的结果。 (你可以告诉它通过比较虽然子列表中的具体内容进行搜索,通过-index
选项。)
1
regsub
也可以适用于从列表中删除值。
set mylist {a b c}
puts $mylist
a b c
regsub b $mylist "" mylist
puts $mylist
a c
llength $mylist
2
0
刚刚结束了别人怎么做
proc _lremove {listName val {byval false}} {
upvar $listName list
if {$byval} {
set list [lsearch -all -inline -not $list $val]
} else {
set list [lreplace $list $val $val]
}
return $list
}
然后用
Inline edit, list lappend
set output [list 1 2 3 20]
_lremove output 0
echo $output
>> 2 3 20
Set output like lreplace/lsearch
set output [list 1 2 3 20]
echo [_lremove output 0]
>> 2 3 20
Remove by value
set output [list 1 2 3 20]
echo [_lremove output 3 true]
>> 1 2 20
Remove by value with wildcar
set output [list 1 2 3 20]
echo [_lremove output "2*" true]
>> 1 3
相关问题
- 1. 从tcl列表中删除子列表
- 2. 删除元素,并从列表中删除下列元素
- 3. 从元组列表中删除元素
- 4. 从python列表中删除元素
- 5. 如何从列表中删除元素
- 6. 从链接列表中删除元素
- 7. 从列表中增量删除元素
- 8. 从python3的列表中删除元素
- 9. python-从列表中删除元素
- 10. 从元组中删除逗号列表
- 11. 从通用列表中删除元素
- 12. 元素不从列表中删除
- 13. 从C++列表中删除元素
- 14. 从链接列表中删除元素
- 15. 从列表中删除元素
- 16. 从列表元素中删除项目?
- 17. 从列表中动态删除元素
- 18. Python从列表中的列表中删除空元素
- 19. 如何从字典中的列表中删除列表元素?
- 20. 如何从列表中TCL
- 21. 如何在条件语句中从列表中删除元素?
- 22. 从列表删除一个元素
- 23. 从列表中删除文件名python
- 24. 从列表中删除todoItem
- 25. 从列表中删除nan
- 26. 从SQLite表中删除列
- 27. 从列表中删除
- 28. 从列表中删除值
- 29. 删除并从列表中
- 30. clisp:从列表中删除
这是伟大的,但我的名单由来自子列表打电话,我想在每个子表,如果检查第二个索引中的值为0(例如),我想删除该子列表。我应该怎么做。附:问题是[lindex $ list]返回的值不是参考 – Narek 2011-04-18 11:27:54
@Narek然后请更新您的问题,问问你想要什么,B/C drysdam回答了你问的问题。 – 2011-04-18 12:20:31
请将[lreplace $ idx $ idx]更改为[lreplace $ mylist $ idx $ idx]。 – Narek 2011-05-11 05:10:14