我想生成具有以下条件的大小为 2 的整数列表的列表。
- 第一个元素应该小于第二个元素并且
- 所有数据都应该是唯一的。
我可以使用自定义函数生成每个元组,但不知道如何使用它来满足第二个条件。
from hypothesis import strategies as st
@st.composite
def generate_data(draw):
min_val, max_val = draw(st.lists(st.integers(1, 1e2), min_size=2, max_size=2))
st.assume(min_val < max_val)
return [min_val, max_val]
我可以通过以这种(低效?)方式迭代generate_date
几次来生成数据:
>>> [generate_data().example() for _ in range(3)]
[[5, 31], [1, 12], [33, 87]]
但是如何检查数据是否唯一?
例如,以下值无效:
[[1, 2], [1, 5], ...] # (1 is repeated)
[[1, 2], [1, 2], ...] # (repeated data)
但以下是有效的:
[[1, 2], [3, 4], ...]