也许是这样的?
list = {{a, b, c, {x, y}, d, x}, {a, b, c, d, x}, {{a, b, c, d}, x}}
Select[list, MemberQ[#, x, {2}] &]
输出:
{{a, b, c, {x, y}, d, x}}
更新
这也将起作用
Cases[list, _?(MemberQ[#, x, {2}] &)]
更新@rose 问题(见评论)
鉴于以下数据,我如何在字符串中选择包含单词“物理检查”的条目,例如在字符串“P-023 物理检查,技术人员,NOS”中,在第二级(即仅在子列表中) ? (我稍微修改了@rose 的例子)
rdata2={{1111113,21119,SQLDateTime[{2011,1,11,11,11,0.`}],31111,"EB/JW",1,47000,"T-510 CHEEK",{"T-510 CHEEK","No Examination, NOS"},"Text bla bla bla physical examination bla bla"},{1111114,21119,SQLDateTime[{2011,2,11,11,11,0.`}],31112,"EB/JW",1,47000,"T-510 CHEEK",{"T-510 CHEEK","P-023 PHYSICAL EXAMINATION, TECHNICIAN, NOS"},"Text bla bla bla"},
{1111115,21000,SQLDateTime[{2011,1,11,11,11,0.`}],31111,"EB/JW",1,47000,"T-510 CHEEK",{"T-510 CHEEK","P-023 physical examination, TECHNICIAN, NOS"},"Text bla bla bla physical examination bla bla"}};
(1) 一种方式(仅返回条目 1111114)
Select[rdata2,
MemberQ[Characters@#,
Flatten@{___, Characters["PHYSICAL EXAMINATION"], ___}, {2}] &]
(2) 忽略大小写(但仍在子列表中选择)
Select[rdata2,MemberQ[ToLowerCase@Characters@#,
Flatten@{___,ToLowerCase@
Characters["PHYSICAL EXAMINATION"],___},{2}]&]
(选择条目 1111114 和 1111115)
(3) 最后一个例子(在子列表中选择“No Examining”但“No”和“Examination”之间可能有零个或多个字符,并且再次忽略大小写的条目)
Select[rdata2,
MemberQ[ToLowerCase@Characters@#,
Flatten@Riffle[
ToLowerCase@Characters@{"No", "Examination"}, ___, {1, -1,
2}], {2}] &]
(选择条目 1111113)
毫无疑问,有更有效的方法来进行。我希望我已经正确解释了这个问题。