我如何用比较运算符检查每个分割块中的数字?与Python



我有以下输出:

[3, 3, 3], [4, 4, 4], [2, 4, 4], [4, 5, 1], [5, 5, 5], [2, 4, 3], [5, 5, 1], [4, 5, 4], [4, 5, 1], [2, 2, 2], [3, 3, 3], [5, 5, 5], [2, 2, 2], [3, 5, 3], [2, 2, 2], [1, 3, 1], [3, 3, 2], [2, 4, 4], [5, 5, 5], [3, 5, 3].

我如何用python测试每个块使用以下公式:

  • 第一个数据块数小于或等于第三个数据块数大于或等于第二个数据块数?

    例如,我可以测试第一个数据块,如果第三个数字在第一个和第二个范围内(例如)5号是第三个数字,1号是2号,2号是8号。5号在2到8之间。)我可以打印TrueFalse

比较比使用in range(...)更有效

all([start <= num and num <= end for start, end, num in lst])
性能测试

输入:

lst = [[i, i+1, i+1] for i in range(1000)]

Within range(...):

代码:

%timeit [l[-1] in range(l[0], l[1]+1) for l in lst]
print(all([l[-1] in range(l[0], l[1]+1) for l in lst]))

输出:

1.22 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
True

比较

代码:

%timeit [start <= num and num <= end for start, end, num in lst ]
print(all([start <= num and num <= end for start, end, num in lst ]))

输出:

258 µs ± 29.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
True

使用range:

lst = [3, 3, 3], [4, 4, 4], [2, 4, 4], [4, 5, 1], [5, 5, 5], [2, 4, 3], [5, 5, 1], [4, 5, 4], [4, 5, 1], [2, 2, 2], [3, 3, 3], [5, 5, 5], [2, 2, 2], [3, 5, 3], [2, 2, 2], [1, 3, 1], [3, 3, 2], [2, 4, 4], [5, 5, 5], [3, 5, 3]
>>> [l[-1] in range(l[0], l[1]+1) for l in lst]
[True, True, True, False, True, True, False, True, False, True, 
True, True, True, True, True, True, False, True, True, True]

comparisons:

>>> [l[0]<=l[1]<=l[-1] for l in lst]
[True, True, True, False, True, True, False, True, False, True,
True, True, True, True, True, True, False, True, True, True]

最新更新