考虑:
list= {{{{21, 22}, 283}, {{26, 13}, 28}, {{32, 17}, 531}, {{31, 11},
187}, {{30, 9}, 154}, {{25, 12}, 377}, {{12, 16},
285}}, {{{20, 19}, 183}, {{11, 23}, 249}, {{18, 21},
174}, {{12, 21}, 513}, {{24, 23}, 233}, {{29, 20},
465}}, {{{18, 20}, 136}, {{13, 23}, 244}, {{19, 21},
228}, {{14, 16}, 453}, {{14, 22}, 201}, {{18, 22},
417}, {{10, 22}, 217}, {{17, 23}, 180}}, {{{22, 20},
123}, {{25, 17}, 210}, {{28, 10}, 536}, {{27, 13},
296}, {{19, 11}, 391}, {{23, 18}, 305}, {{24, 18}, 204}}}
Length /@ list
{7, 6, 8, 7}
问题是:
如何选择长度为>的子列表?例如7。 我一直在尝试很多位置/选择失败: - (
答案 0 :(得分:7)
Select[list, Length@# > 7 &]
修改强>
如果有疑问,您可以测试标准如何评估其参数。例如:
Select[{a, b, c}, Print]
或者在古典道路上多一点:
Reap@Select[{a, b, c}, Sow]
感谢Brett在下面的评论中提出的建议
答案 1 :(得分:4)
使用案例查看所有级别,其模式仅匹配长度大于7的列表。
In[426]:= Cases[list, aa_List /; Length[aa] > 7, Infinity]
Out[426]= {{{{18, 20}, 136}, {{13, 23}, 244}, {{19, 21},
228}, {{14, 16}, 453}, {{14, 22}, 201}, {{18, 22}, 417}, {{10, 22},
217}, {{17, 23}, 180}}}
---编辑---
对不起,我误会了。如上所述,没有第三个参数(无穷大)。在这种情况下,结果是相同的。
---结束编辑---
Daniel Lichtblau
答案 2 :(得分:1)
其他一些变体:
Cases[list,_?(Length[#]>7&)]
If[Length[#]>7,#]&/@list/.Null->Sequence[]
(x\[Function]Replace[x,x_?(Length[#]<=7&)->Sequence[]])/@list