gpt4 book ai didi

python - 使用 Hypothesis Python 生成条件数据

转载 作者:行者123 更新时间:2023-11-28 21:03:53 25 4
gpt4 key购买 nike

我想生成具有以下条件的大小为 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], ...]

最佳答案

我认为以下策略可以满足您的要求:

import hypothesis.strategies as st

@st.composite
def unique_pair_lists(draw):
data = draw(st.lists(st.integers(), unique=True)
if len(data) % 2 != 0:
data.pop()
result = [data[i:i+2] for i in range(0, len(data), 2)]
for pair in result:
pair.sort()
return result

这里的想法是,我们生成一些能够提供正确元素的东西,然后将其转换为正确形状的东西。我们不是尝试生成整数列表对,而是生成一个唯一整数列表,然后将它们分组(如果整数数量为奇数,则删除最后一个元素)。然后,我们对每一对进行排序,以确保其顺序正确。

关于python - 使用 Hypothesis Python 生成条件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49755719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com