2015-04-21 32 views
1

删除无效的项目我创建了蟒蛇以下列表DynamoBIMPython从列表

a = [["f", "o", "c"], [null, "o", null], [null, "o", null]] 

我想从列表中删除无效的项目来创建此列表:

a = [["f", "o", "c"], ["o"], ["o"]] 

我已经尝试过list.remove(x),filter s,for -loops,和其他一些方法,但似乎无法摆脱这些bugger。

我该怎么做?

+0

如何嵌套您的列表? – sshashank124

+0

什么是'null'?你的意思是“没有”? – taskinoor

+0

谢谢大家!这些都是很好的答案;但这似乎是Dynamo的一个问题。正如@Arun所指出的那样,'null'不在Python中。 Dynamo创建这些'null'项目来代替'None',它们在某种程度上不能被识别为字符串。如果有人在Dynamo中使用Python时遇到了这个问题,我使用'Object.IsNull'和'List.FilterByBoolMask'组件来删除'null'项。 ![Valid XHTML](http://tinypic.com/r/14dd6vq/8)。 – Blake

回答

1

其实空是不是蟒蛇,他们应该是字符串如

list_value = [["f", "o", "c"], ['null', "o", 'null'], ['null', "o", 'null']] 

[filter(lambda x: x!='null' and x!=None, inner_list) for inner_list in list_value] 

[['f', 'o', 'c'], ['o'], ['o']] 

您还可以通过嵌套列表解决理解:

[[for i in inner_list if i!='null' and not i] for inner_list in list_value] 
6

假设你的意思是零None,您可以使用列表理解:

>>> null = None 
>>> nested_list = [["f", "o", "c"], [null, "o", null], [null, "o", null]] 
>>> [[x for x in y if x] for y in nested_list] 
[['f', 'o', 'c'], ['o'], ['o']] 

如果null是一些其他的价值,你可以改变上面的设置为别的东西的null值,改变修真:

>>> null = None # Replace with your other value 
>>> [[x for x in y if x != null] for y in nested_list] 
[['f', 'o', 'c'], ['o'], ['o']] 
0

您可以使用一个简单的列表理解:

>>> a = [["f", "o", "c"], [None, "o", null], [null, "o", None]] 
>>> a = [[sub for sub in item if sub] for item in a] 
>>> a 
[['f', 'o', 'c'], ['o'], ['o']] 
>>> 

这相当于:

a = [["f", "o", "c"], [None, "o", null], [null, "o", None]] 
new = [] 
for item in a: 
    _temp = [] 
    for sub in item: 
     if sub: 
      _temp.append(sub) 
    new.append(_temp) 

a = new 

>>> a = [["f", "o", "c"], [None, "o", null], [null, "o", None]] 
>>> new = [] 
>>> for item in a: 
...  _temp = [] 
...  for sub in item: 
...   if sub: 
...    _temp.append(sub) 
...  new.append(_temp) 
... 
>>> a = new 
>>> a 
[['f', 'o', 'c'], ['o'], ['o']] 
>>> 
2
a = [["f", "o", "c"], [None, "o", None], [None, "o", None]] 
l = [] 
for i in a: 
    l.append(filter(lambda x: x is not None, i)) 

print (l) 

[['f', 'o', 'c'], ['o'], ['o']] 
1

假设你的意思是None,你可以尝试使用filter()功能:

a = [["f", "o", "c"], [None, "o", None], [None, "o", None]] 
print [filter(None,x) for x in a] 

>>> 
[['f', 'o', 'c'], ['o'], ['o']]