我有以下输出:
[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是第三个数字,第一个数字是第二个,第二个数字是8号。,即数字5在2到8之间)。我可以打印False或True
发布于 2021-09-23 15:31:39
比较比使用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)]带in 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发布于 2021-09-23 15:30:44
使用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]>>> [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]https://stackoverflow.com/questions/69302830
复制相似问题