2013-12-19 37 views
2

我有一个名为totalist的数组,其中包含一些内容。我想要做的是,每行totalist检查前24个值是否不为空,我不在意其余的。检查数组的前24个值是否为空

totalist包含类似行:

totalist = [ 
    ['stuff1', '33.0', '5.0', '165.0', '6.0', '990.0', '880.0', '95.0', '19.0', '3135.0', '4.0', '0.666666666667', '3.83333333333', '330.0', '9.5', '4.75', '3.16666666667', '225.0', '13.9333333333', '6.96666666667', '15.6666666667', '4.64444444444', 'cba', '0.1', '', '', 'test', '40.0', '3.0', '120.0', '4.0', '480.0', '480.0', '24.0', '8.0', '960.0', '', '0.0', '2.0', 'testing', '0.1', '', '', '', 'asdf', '2034', '123', '34', '23', '4', '56', 'asd', 'ok', 'cruz', 'reti', 'clip', 'twp', 'three', 'pedr', 'dcheck', '1-4'], 
    ['stuff2', '40.0', '3.0', '120.0', '5.0', '600.0', '552.0', '24.0', '8.0', '960.0', '2.0', '0.4', '2.0', '200.0', '4.8', '2.4', '1.6', '200.0', '4.8', '2.4', '2.0', '1.6', 'qw', '0.1', '', '', 'Mec', '34.0', '6.0', '204.0', '4.0', '816.0', '714.0', '75.0', '12.5', '2550.0', '2.0', '0.5', '3.625', '123', '0.1', '', '123', 'vve', '', '4.0', '4.0', '4.0', '4.0', '8.0', '6.0', '4.0', '4.0', '6.0', '6.0', '4.0', '4.0', '4.0', '4.0', '4.0', '4.0'], 
    ['stuff3 ', '34.0', '6.0', '204.0', '6.0', '1224.0', '1156.0', '75.0', '12.5', '3840.0', '2.0', '0.333333333333', '3.47058823529', '600.0', '6.4', '3.2', '2.13333333333', '190.0', '20.2105263158', '10.1052631579', '33.173374613', '6.73684210526', 'rem', '0.1', '', '', 'tapa', '24.0', '8.0', '192.0', '4.0', '768.0', '672.0', '73.0', '9.125', '1752.0', '2.0', '0.5', '2.78125', 'hem', '0.1', '', '', 'sock', '3.0', '', '4.0', '4.0', '4.0', '8.0', '6.0', '4.0', '4.0', '6.0', '6.0', '4.0', '4.0', '4.0', '4.0', '4.0', '4.0'], 
] 

因此,例如,在第一线,我要检查,如果从stuff10.1值是不是空的。

我试图用x范围迭代:

for i in xrange(len(totalist)): 
    print totalist[i] 

,打印我所有的线,但是我被卡住的时候我已经从0每一行迭代,以23
任何帮助是非常赞赏。由于

回答

3
for elem in totallist: 
    print all(elem[:24]) # first 24 elements are non-empty. 
1

xrange()返回的项目列表,您已定义来分析你的阵列的每个列表;你可以用它来越过每个列表的24个第一要素:

for sublist in totalist: 
    for i in xrange(24): 
     print sublist[i]!="" 

但是,这一切的一切,每四个行,您可以用功能all做到这一点:

for sublist in totalist: 
    print all(elem!="" for elem in sublist[1:25]) 
+0

准确地说,xrange()返回一个xrange对象,它基本上是一个遍历指定范围内的数字列表的生成器。另一方面,range()确实返回一个整数列表(不是任何项目)。 –

+0

这是更正确的长版答案,谢谢你的精确度! –

-1

您可以初始化大小为len的标志数组(totalist),并将其初始化为24,假定所有值都是最初填充的。

虽然在前24位删除一些值,您可以递减该标志并在前24位插入您的增量值。

然后,您可以简单地检查标志的内容,以检查O(1)时间内的前24个是否为空。希望能帮助到你。