我的代码目前包含,作为while循环条件的一部分:
reduce(operator.or_, map(lambda y: reduce(operator.or_, map(lambda x: x[0] == y, data[testedoffset:])), footers))
它的目的是检查python array.array实例的给定切片是否包含几个特定字节值中的一个。
我得到的错误是:
NameError: global name 'y' is not defined
所以我很确定这是一个范围问题。但我想不出办法从我这里做我想做的事。
答案 0 :(得分:3)
我看到你自己找到了答案,但是当你在这里时...... 该代码确实可以使用一些工作。
我不完全确定您为什么要在data[testedoffset:]
序列上基于footers
映射该表达式。除非你__getitem__
有副作用,否则这似乎没有任何效果。
但整个map + reduce + operator.or_
事情给了我一些意志。
尝试更像这样的事情:
y = 'whatever'
if any(x[0] == y for x in data[offset:]):
print "yep, it's in there"
答案 1 :(得分:0)
这肯定不是一个范围问题,它显然是一个 unpythonic 表达式。 这是我尝试理解它,我发现你必须将y传递给lambda表达式。
reduce(operator.or_,
map(lambda y: reduce(operator.or_, map(lambda x: x[0] == y, data[testedoffset:]))
,#Where is y
, footers))