Python 不需要从列表中删除任何内容

Python 不需要从列表中删除任何内容,python,excel,Python,Excel,我的excel在第一行有列名。我需要在没有无的情况下阅读它: a = [Sheet.UsedRange.Rows(1).Value] [((u'Step', u'Test Case ID', u'Traceability Ref', u'Test Description', u'Display', u'Test conditions', None, None, None, None, None, u'Test Criteria', u'Delay Time(ms)', u'Capture Ti

我的excel在第一行有列名。我需要在没有
的情况下阅读它:

a = [Sheet.UsedRange.Rows(1).Value]
[((u'Step', u'Test Case ID', u'Traceability  Ref', u'Test Description', u'Display', u'Test conditions', None, None, None, None, None, u'Test Criteria', u'Delay Time(ms)', u'Capture Time(ms)', u'Automation Type(A/S)', u'Expected Output', None, None, None, u'Actual Output', u'Comments'),)]
我厌倦了使用过滤器:

a = filter(None, a)

我需要删除
None
(这是我的excel中的空列)。

解决方案的问题在于列表本身。如果仔细看,它不是一个可以过滤的值列表,而是一个列表,有一个元组,其中一个元素是另一个元组,然后包含所有值

因此,如果您修复了列表
a
,那么它将起作用

a = [Sheet.UsedRange.Rows(1).Value]
a = list(filter(None, a[0][0]))
简言之:

a = list(filter(None, Sheet.UsedRange.Rows(1).Value[0]))
试试这个:

while None in a:
    a.remove(None)

过滤器(无,a)
实际上非常接近。不过,它会删除空字符串、零和其他伪值。您使用的是Python2还是Python3?您尝试过使用
过滤器
。。。发生了什么事?它工作了吗?或者可能只是
a=list(filter(None,Sheet.UsedRange.Rows(1.Value[0]))
以减少垃圾;最外层的包装来自
[…]
构造。在一般情况下,您很少希望使用过滤器(None,…),因为它会过滤掉计算结果为
False
的元素,例如
None
0
[]
'
。列表理解
[col\u name for col\u name in Sheet.UsedRange.Rows(1)。如果col\u name不是None,则值[0]
可能是另一种选择。A=list(filter(lambda x:x不是None,Sheet.UsedRange.Rows(1)。Value[0])这相当于
过滤器(lambda x:x不是None,A)
,OP已经尝试过使用它。公平地说,我确实试过了。。。在我的手机上使用SL4A。我使用了spotty 4G,因此我无法查找
过滤器
文档(我很少使用)。问题是,如果它是一个包含一些
None
s的简单列表,这将起作用(在这种情况下,
filter(None,a)
也会起作用,而且速度更快),除非它不起作用,正如另一个答案中所解释的那样。