所以基本上,我试图创建一个函数来检查一个列表,这个列表可能包含许多嵌套的列表,也可能不包含很多嵌套的列表,看看它们是否都是空的。
所以
empty([])将返回true,empty([['']])和empty([[[]]])也将返回true
我试过了
def empty(seq):
try:
return all(map(empty, seq))
except TypeError:
return False但是当我运行这个程序时,会遇到RuntimeError: maximum recursion depth exceeded错误。
有问题的案例字符串是这样的:["[u'3D Blu-ray Disc\\u2122 Player (BD-D7500)']"],我不知道为什么会导致这个问题
["[u'3D Blu-ray Disc\\u2122 Player (BD-D7500)']"]
maximum recursion depth exceeded in cmp
Traceback (most recent call last):
File "./dashboard.py", line 583, in download
return get_rows_from_db(str(job.id), job.url,taskid, options,trial)
File "./dashboard.py", line 123, in get_rows_from_db
print "B " + empty(col)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "./dashboard.py", line 52, in empty
for item in seq)
File "./dashboard.py", line 52, in <genexpr>
for item in seq)
File "/usr/lib/python2.7/abc.py", line 132, in __instancecheck__
if subclass is not None and subclass in cls._abc_cache:
File "/usr/lib/python2.7/_weakrefset.py", line 73, in __contains__
return wr in self.data
RuntimeError: maximum recursion depth exceeded in cmp发布于 2016-01-28 20:08:52
此函数满足您提供的每个测试用例。
import collections
def empty(seq):
if isinstance(seq, basestring):
return seq == ''
return all(empty(item)
if isinstance(item, collections.Sequence)
else False
for item in seq)
assert empty([])
assert empty([['']])
assert empty([[[]]])
assert not empty([[[], 1]])
assert empty(u'')
assert not empty(u'1')
assert not empty(["[[u'3D Blu-ray Disc\\u2122 Player (BD-D7500)']"])发布于 2016-01-28 19:55:59
def empty(L_or_I):
if not L_or_I:
return True
if isinstance(L_or_I,(list,tuple)):
return all(empty(x) for x in L_or_I)
return False我猜..。也许吧
发布于 2016-01-28 20:02:47
如果0的列表是“空”,Joran的回答肯定是正确的。
如果您只想检查可迭代性,我建议:
import collections
def empty(e):
if not isinstance(e, collections.Iterable):
return False
if not e:
return True
return all(empty(x) for x in e)https://stackoverflow.com/questions/35070722
复制相似问题