lib*_*ias 7 wolfram-mathematica
假设您有一个列表列表,并且您希望仅删除长度为零的列表,例如:
a={{...},{...},{...},...}
DeleteCases[a, ?]
Run Code Online (Sandbox Code Playgroud)
应该?是什么?
Sim*_*mon 11
In[1]:= a={{1,2,3},{4,{5,5.5},{}},{},6,f,f[7],{8}}
Out[1]= {{1,2,3},{4,{5,5.5},{}},{},6,f,f[7],{8}}
Run Code Online (Sandbox Code Playgroud)
这是纳赛尔提供的解决方案:
In[2]:= DeleteCases[a, x_/;Length[x]==0]
Out[2]= {{1,2,3},{4,{5,5.5},{}},f[7],{8}}
Run Code Online (Sandbox Code Playgroud)
请注意,它会删除级别为1的所有长度为零的对象.如果您只想{}从第一级删除长度为零的列表(即),则可以使用
In[3]:= DeleteCases[a, {}]
Out[3]= {{1,2,3},{4,{5,5.5},{}},6,f,f[7],{8}}
Run Code Online (Sandbox Code Playgroud)
或者如果你想从所有级别删除它们然后使用ReplaceAll(/.)
In[4]:= a /. {} -> Sequence[]
Out[4]= {{1,2,3},{4,{5,5.5}},6,f,f[7],{8}}
Run Code Online (Sandbox Code Playgroud)
可能是这样的:
a = {{1, 2, 3}, {4, 5}, {}, {5}}
b = DeleteCases[a, x_ /; Length[x] == 0]
{{1, 2, 3}, {4, 5}, {5}}
Run Code Online (Sandbox Code Playgroud)