来源微信公众号:icdlab,关注公众号获取更多信息
List操作函数简介
- List数据类型作为Skill中最常用最核心的数据类型应用十分广泛;
- list数据类型相关的操作函数众多,主要包括以下类别:
- 基本函数:
主要功能是list创建,判断,长度获取,复制
函数包括:list,listp,length,dtpr,pairp,range,copy - 查找函数:
主要功能查找获取list中的某些元素
函数包括:car,cdr,nthelem,last,member,lindex,nth,nthcdr,xCoord,yCoord,assoc - 增加函数:
主要功能是在list的特定位置添加元素
函数包括:append1,cons,ncons,xcons,constar,tconc - 合并函数:
主要功能是合并list
函数包括:append,nconc,lconc - 删除函数:
主要功能是删除list的某些特定元素
函数包括:remove,remd,remdq,removeListDuplicates,remq - 修改函数:
主要功能是修改list中指定元素值
函数包括:rplaca,rplacd,setcar,setcdr - 排序函数:
主要功能是对list中的元素按指定顺序排序
函数包括:reverse,sort - 过滤函数:
主要功能是根据指定条件过滤list中的元素
函数包括:setof,exists,forall
基本函数
list
- 函数用法:
list( [ g_arg1 g_arg2 ... ] ) ;=> l_result / nil - 函数输入:
g_arg1/g_arg2/... 为任意数量任意数据类型的多个数据,也可以没有输入 - 使用实例:
list(1 2 3) => (1 2 3)
listp
- 函数功能:
判断输入参数是否为list数据类型,如是list类型则返回t,否则返回nil - 函数用法:
listp( g_value ) ;=> t / nil - 函数输入:
函数输入g_value为任意需要判断的数量类型数据 - 使用实例:
listp('(1 2 3)) => t
listp( nil ) => t ;等价与listp( list() ) => t
listp( 1 ) => nil - 其他说明:
Skill中通常在函数名后加后缀p来表明这个是一个判断函数;
length
- 函数功能:
获取输入列表的长度,即输入列表元素个数; - 函数用法:
length( laot_arg ) ;=> x_result / 0 - 函数输入:
输入参数laot_arg可以是list,arry,table和string数据类型; - 函数输出:
输出x_result为输入参数的长度,也即元素个数; - 使用实例:
length( '(a b c d) ) => 4
z = '(1 2 3) => (1 2 3)
length( z ) => 3
dtpr
- 函数用法:
dtpr( g_value ) ;=> t / nil - 函数输入:
输入参数g_value为任意需要判断的数据 - 函数输出:
如果输入参数g_value为非空list则返回t,否则返回nil - 使用实例:
dtpr( 1 ) => nil
dtpr( list(1)) => t
pairp
- 函数功能:
判断给定对象是否为非空list,该函数与dtpr函数功能等同; - 函数用法:
pairp( g_obj ) ;=> t / nil - 函数输出:
如果输入参数g_obj为非空list则返回t,否则返回nil - 使用实例:
dtpr( 12 ) => nil
dtpr( '(1 2)) => t
range
- 函数功能:
产生一个list,该list的首个元素为函数的第一个输入参数,list的尾元素为函数的第二个输入参数 - 函数用法:
range( n_num1 n_num2 ) ;=> l_result - 函数输出:
函数返回一个list,list的首元素为函数输入的第一个参数,list的尾元素为输入的第二个参数; - 使用实例:
range(1 2) => (1 2)
range(1.0 2.0) => (1.0 2.0)
copy
- 函数功能:
复制输入的list数据为一个新的list并返回 - 函数用法:
copy( l_arg ) ;=> l_result - 函数输入:
函数输入l_arg为list数据类型数据 - 函数输出:
函数将输入list l_arg复制成一个新的list返回 - 使用实例:
z = '(1 (2 3) 4) => (1 (2 3) 4)
x = copy(z) => (1 (2 3) 4)
equal(z x) => t
z和x具有相同的值
eq(z x) => nil
z和x不是同一个list - 其他说明:
Skill中的列表结构通常是共享的,而且编程中有很多函数会修改list值, 为了使list数据不会被无意修改,通常使用copy函数创建新的list来解决这个问题。但是需要注意的是copy函数只复制顶级元素值,下层元素的值还是共享的。
免责声明:
1,本公众号主要是交流学习IC设计知识,部分素材源于网络,若有侵权,作者会第一时间修改删除;
2,本公众号标明原创的文章欢迎转载并注明出处;
3,本公众号文章中出现的脚本仅供学习之用,作者不对其他任何个人或组织在使用脚本过程中产生的任何纠纷负责;
4,本公众号的主体为个人,发表文章纯属个人交流学习行为,文章的观点也属个人观点,与作者曾经任职或者正在任职的公司、其他个人或组织没有任何关系;
5,本公众号文章为个人撰写,错误和疏漏之处在所难免,希望大家指正;
6,本公众号发表的文章依赖各种软件,作者所获取的软件仅供学习交流之用,若有侵权,作者将配合删除;