我正在阅读this,但我不确定如何查看列表中单个项目的长度。我在下面有以下庞大的代码,我想知道是否有更多的pythonic方法来做到这一点?
indexdf = [['1','','1',], ['1', '']]
listy = []
for ilist in indexdf:
listx = [ ]
#print ilist
for x in ilist:
#print x
if len(x) > 0:
listx.append(x)
listy.append(listx)
输出
listy = [['1','1']. ['1']]
答案 0 :(得分:2)
listy = [ [x for x in ilist if len(x) > 0] for ilist in indexdf]
还有一个技巧,因为你的例子中的“特定长度”恰好排除了空字符串:
[x for x in ilist if len(x) > 0]
可以替换为
list(filter(None, ilist))
在Python 3中或只是
filter(None, ilist)
在Python 2中,或
[x for x in ilist if x]
其中任何一个。
答案 1 :(得分:0)
您可以在此处使用嵌套列表解析。请注意,空字符串将在布尔上下文中返回False
。空列表,元组等也是如此。
>>> lst = [['1','','1',], ['1', '']]
>>> lst = [[x for x in sl if x] for sl in lst]
>>> lst
[['1', '1'], ['1']]