Python 变量内部列表的列表理解示例
我正在用python进行列表理解Python 变量内部列表的列表理解示例,python,list,compression,Python,List,Compression,我正在用python进行列表理解 l = [['200801', '100'], ['', ''], ['200802', '151'], [''], ['200805', '160'] ,['', u''], [''], [u'\xa0'], ['\r\n \r\n ', '\r\n '], ['200812', '50']] 我希望输出为 [['200801'
l = [['200801', '100'], ['', ''], ['200802', '151'], [''], ['200805', '160'] ,['', u''], [''], [u'\xa0'], ['\r\n \r\n ', '\r\n '], ['200812', '50']]
我希望输出为
[['200801', '100'], ['200802', '151'], ['200805', '160'], ['200812', '50']]
如何删除这种不确定的可变长度和额外字符的内部列表?这里有一种方法:
>>> [x for x in l if all(y.strip() for y in x)]
[['200801', '100'], ['200802', '151'], ['200805', '160'], ['200812', '50']]
不过我不太喜欢它,它在一行中做的太多了
如果你能更好地描述你想要表达的内容,你会发现用Python(或任何其他语言)来描述要容易得多。你可以使用正则表达式来搜索看起来像数字的模式
>>x=['200801','100'],['',['',['200802','151'],['','200805','160'],['',u'\xa0'],['\r\n\r\n'],['200812','50']
>>>进口稀土
>>>[p代表x中的p,如果所有(重新匹配(r'\d+',q)代表p中的q)]
[['200801', '100'], ['200802', '151'], ['200805', '160'], ['200812', '50']]
加入
可以在这里派上用场
# keep only non-empty lists
print [x for x in l if ''.join(x).strip()]
# keep only lists with digits
print [x for x in l if ''.join(x).isdigit()]
也可以是
y.isdigit()
,具体取决于OP@gnibbler:可能是。该规范非常缺乏。您需要定义“删除什么?”和“保留什么?”。否则,我们都在浪费时间猜测你在想什么。同样,当你说“我正在研究列表理解”时,你应该通过展示你的列表理解来帮助我们。。。这个问题没有答案。