找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 237|回复: 8
打印 上一主题 下一主题

[求助] 请问有没有类似sortcar的sortcadr函数???

[复制链接]

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
跳转到指定楼层
1#
发表于 2015-11-2 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
List = list(list("a" "e" "c") list("a" "c" "d") list("c" "c" "d") list("b" "e" "f"))
按照sortcar排序后,List是
list(list("a" "e" "c") list("a" "c" "d") list("b" "e" "f") list("c" "c" "d"))
我需要的是根据car排序后,再根据cadr排序,但是不能改变sortcar的前提,也就是
list(list("a" "c" "d") list("a" "e" "c") list("b" "e" "f") list("c" "c" "d"))
请问应该如何实现sortcadr这个功能?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
2#
发表于 2015-11-2 17:07 | 只看该作者
本帖最后由 XYX365 于 2015-11-2 17:08 编辑

可以試試下列函數看看

List = sort(List 'fnSortCadr)
  1. procedure(fnSortCadr(list1 list2)
  2.                         let((y1 y2 result)
  3.                                 y1 = cadr(list1)
  4.                                 y2 = cadr(list2)
  5.                                 if(y1 < y2 then
  6.                                         result = t
  7.                                 else
  8.                                         result = nil
  9.                                 )
  10.                                 result
  11.                         )
  12.                 )
复制代码

点评

而且所有元素都是字母和数字结合的,所以不能直接用 < > 来比较  详情 回复 发表于 2015-11-2 17:19
tmpList = sortcar(tmpList 'axlStrcmpAlpNum) 我目前用的排序是这种 但是会有一个特殊情况,car的内容是一样的,所以还要继续比较cadr的内容 在比较cadr内容的时候,car排序的前提不能改变 而不是直接根据cadr  详情 回复 发表于 2015-11-2 17:18

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
3#
 楼主| 发表于 2015-11-2 17:18 | 只看该作者
XYX365 发表于 2015-11-2 17:07
可以試試下列函數看看

List = sort(List 'fnSortCadr)

tmpList = sortcar(tmpList 'axlStrcmpAlpNum)
我目前用的排序是这种
但是会有一个特殊情况,car的内容是一样的,所以还要继续比较cadr的内容
在比较cadr内容的时候,car排序的前提不能改变
而不是直接根据cadr排序

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
4#
 楼主| 发表于 2015-11-2 17:19 | 只看该作者
XYX365 发表于 2015-11-2 17:07
可以試試下列函數看看

List = sort(List 'fnSortCadr)

而且所有元素都是字母和数字结合的,所以不能直接用 < > 来比较

点评

可以改成 axlStrcmpAlpNum() 再判斷就好 下面是axlStrcmpAlpNum()的輸出結果 Value Returned 0 The two strings are equal. +num If t_str1 is greater than t_str2 (1 goes after 2) nil If t_str1 is less  详情 回复 发表于 2015-11-2 17:42

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
5#
发表于 2015-11-2 17:42 | 只看该作者
361553894 发表于 2015-11-2 17:19
而且所有元素都是字母和数字结合的,所以不能直接用 < > 来比较

<> 可以改成 axlStrcmpAlpNum() 再判斷就好
下面是axlStrcmpAlpNum()的輸出結果

Value Returned
0 The two strings are equal.
+num If t_str1 is greater than t_str2 (1 goes after 2)
nil If t_str1 is less than t_str2 (1 goes before 2)



点评

是pdf有问题么?? 我测试出来的结果跟这个不一样的 str1str2返回的是nil  详情 回复 发表于 2015-11-3 09:13
我懂了,也就是可以模仿你的 fnSortCadr函数结构 输出result,sort会根据result的值对list进行排序  详情 回复 发表于 2015-11-3 08:30

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
6#
 楼主| 发表于 2015-11-3 08:30 | 只看该作者
XYX365 发表于 2015-11-2 17:42
可以改成 axlStrcmpAlpNum() 再判斷就好
下面是axlStrcmpAlpNum()的輸出結果

我懂了,也就是可以模仿你的
fnSortCadr函数结构
输出result,sort会根据result的值对list进行排序

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
7#
 楼主| 发表于 2015-11-3 09:13 | 只看该作者
本帖最后由 361553894 于 2015-11-3 09:17 编辑
XYX365 发表于 2015-11-2 17:42
可以改成 axlStrcmpAlpNum() 再判斷就好
下面是axlStrcmpAlpNum()的輸出結果


是pdf有问题么??
我测试出来的结果跟这个不一样的
str1<str2返回的是t
str1>str2返回的是nil
str1=str2返回的也是nil

102

主题

377

帖子

1158

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1158
8#
 楼主| 发表于 2015-11-3 09:57 | 只看该作者
  1. procedure( AlphaNum2Sort(list1 list2)
  2.         let((x1 x2 y1 y2 result)
  3.                 x1 = car(list1)
  4.                 x2 = car(list2)
  5.                 y1 = cadr(list1)
  6.                 y2 = cadr(list2)
  7.                 if(axlStrcmpAlpNum(x1 x2) then
  8.                         result = t
  9.                 else
  10.                         if(x1 == x2 && axlStrcmpAlpNum(y1 y2) then
  11.                                 result = t
  12.                         else
  13.                                 result = nil
  14.                         )
  15.                 )
  16.                 result
  17.         )
  18. )
复制代码

目前暂时用这个解决问题了

6

主题

224

帖子

584

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
584
9#
发表于 2016-1-5 18:10 | 只看该作者
支持一下,赞一下楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-27 00:44 , Processed in 0.061917 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表