我正在尝试使用输入图像和两个列表中的值使用简单表达式创建类别图像。
我有两个列表:
A = [100, 200, 300, 400, 500]
B = [1, 2, 3, 4, 5]
我想写一个类似于:
的表达式(value < 100)?1:0 | (value < 200)?2:0 | (value < 300)?3:0 | (value < 400)?4:0 | (value < 500)?5:0
因此,我最终得到一个图像,其中输入图像中的所有值&lt; 100的新值为1,依此类推。
我知道我可以像上面写的那样写它,但我需要多次这样做,每次都会改变列表的长度。
有没有办法用.join()?
这样做答案 0 :(得分:0)
您是否正在寻找此
>>> A = [100, 200, 300, 400, 500]
>>> B = [1, 2, 3, 4, 5]
>>> x=222
>>> for size,cat in zip(A,B):
... if x<size:
... print cat
... break
...
3
答案 1 :(得分:0)
到目前为止,我可以从您的查询中获取,我认为您希望使用两个列表生成表达式,如果是这样,那么后续逻辑应该可行(希望我的假设不会错误):
A = [100, 200, 300, 400, 500]
B = [1, 2, 3, 4, 5]
out_expr = ''
for i in range(len(A)):
out_expr = out_expr + '(value < ' + str(A[i]) + ')?' + str(B[i]) + ':0 | '
out_expr = out_expr[:-2]
print out_expr
答案 2 :(得分:0)
如果你喜欢单行,你可以使用它:
A = [100, 200, 300, 400, 500]
B = [1, 2, 3, 4, 5]
' | '.join('(value < {0})?{1}:0'.format(*data) for data in zip(A, B))