skill常用函数讲解
1.list():
用来创建一个List数据类型的变量,也可用单引号'。例如:
aList='(1 2 a b c)
bList=list(1 2 'a 'b 'c)
cList='(1 (2 a b) c)
注:当有字符出现的时候,用list()函数创建必须在字符前加单引号。
2.car():
用来读取List中的第一个元素。例如:
car('(a b c))
=>a
3.cdr():
用来读取List中除了第一个元素外后面的单元。例如:
cdr('(a b c))
=>(b c)
此外,可以对List重复混合使用car或cdr函数,组合的格式为以c开头,r结尾,中间可有多个a|d。例如:
caadr功能等同于car(car(cdr(List))),caadr()函数对List的操作顺序为:
(1)先执行一次cdr,读取后面的单元;
(2)对第一步读取的值执行car,读取其第一元素;
(2)对第二步读取的值执行car,读取其第一元素。
caadr('((1 2 3) (4 5 6) (7 8 9)))
=>4
4.nthelem():
按元素序号读取List中的元素。用法:
nthelem(1 1_list)等同于car(1_list)
5.last():
用来读取List中的最后一个元素。其数据类型也是一个List。用法:
last(listname)
6.rplaca():
用来替换List中的第一个元素。例如:
aList='(1 2 3)
bList=rplaca(aList 4)
aList
=>(4 2 3)
eq(aList bList)
=>t
同理用rplacd()函数可以替换List后面的单元。
7.cons():
用来添加元素到List之前。例如:
aList='(2 3 4)
cons(1 aList)
=>(1 2 3 4)
此外,xcons()函数和cons()函数功能一样,只是格式有所区别,前面的变量为原List的元素,后面的变量为需要添加的元素。例如:
xcons('(b c) 'a)
=>(a b c)
8.append1():
用来添加元素到List之后。例如:
append1('(1 2 3) 4)
=>(1 2 3 4)
9.append()与nconc():
两个函数都是用来合并两个List。前者不改变所合并的List变量的值;后者会改变所合并List的值,且依次累加,最后一个List值不变。例如:
cList='(1 2) dList='(3 4 5) eList='(6 7)
append(cList dList)
=>(1 2 3 4 5)
cList
exists的用法=>(1 2)
dList
=>(3 4 5)
nconc(cList dList eList)
=>(1 2 3 4 5 6 7)
cList
=>(1 2 3 4 5 6 7)
dList
=>(3 4 5 6 7)
eList
=>(6 7)
10.reverse():
用于元素倒序排序。例如:
aList='(1 2 3)
reverse(aList)
=>(3 2 1)
bList='(1 2 (3 4 5) 6)
reverse(bList)
=>(6 (3 4 5) 2 1)
bList
=>(1 2 (3 4 5) 6)
11.sort():
用于元素按条件排序。书写格式为:
sort(1_data u_comparefn)
其中第一个变量“1_data”为List的变量,第二个变量“u_comparefn”为对比函数。对比函数也可以是自定义函数。例如:
sort('(4 3 2 1) 'lessp)
=>(1 2 3 4)
sort('(d b c a) 'alphalessp)
=>(a b c d)
sort('("U5" "U10" "U1" "U5" "U2") 'axlStrcmpAlpNum)
=>("U1" "U2" "U5" "U5" "U10")  (其中“axlStrcmpAlpNum”为自定义函数)
此外,当List元素都是由List组成的时候,可以使用sortcar()函数来对比子List的第一个元素排序。例如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。