Python booleans().example()始终返回True

Python booleans().example()始终返回True,python,python-hypothesis,Python,Python Hypothesis,复制: [1]中的:来自假设导入策略 [2]中的bool_st=st.booleans() In[3]:all(bool_st.example()表示范围内(1000)) Out[3]:正确 为什么st.booleans().example()总是返回True?我的理解是,example方法应该返回一个策略可以输出的示例,并且在某种程度上是随机的 相关地,st.sampled\u from(…)似乎永远不会返回iterable中的第一项: [1]中的:来自假设导入策略 In[2]:从集合导入计

复制:

[1]中的
:来自假设导入策略
[2]中的bool_st=st.booleans()
In[3]:all(bool_st.example()表示范围内(1000))
Out[3]:正确
为什么
st.booleans().example()
总是返回
True
?我的理解是,
example
方法应该返回一个策略可以输出的示例,并且在某种程度上是随机的

相关地,
st.sampled\u from(…)
似乎永远不会返回iterable中的第一项:

[1]中的
:来自假设导入策略
In[2]:从集合导入计数器
在[3]中:samp_st=st.sampled_from(列表(范围(10)))
在[4]中:examples=[samp_st.example()表示范围(1000)内的uu]
[5]中:cnt=计数器(示例)
[6]:cnt.most_common()
出[6]:[(1512),(2282),(3119),(4555),(522),(655),(744),(819)]
这是怎么回事

我知道
示例
方法文档中说该方法“不应该太认真”(请参阅)。但是这在解释方面提供的信息很少,最好能更深入地了解发生这种情况的原因。

简单:
.example()
方法避免显示策略中可能出现的最简单示例,因为该示例通常很琐碎。诚然,这对于
st.booleans().example()
来说用处不大,但这就是为什么

对于您的评论,
列出了(…)。example()
由于我们的唯一性检测的限制而一直生成空列表-有关更多详细信息,请参阅1864、1982和PR 1961期;我们一有好办法就把它修好


你可能想解释你的问题和代码片段的上下文。我不知道什么是
st.booleans().example()
,但我的第一个假设是“st.booleans()持有一个状态,我们不应该每次都重新创建它,把它保存到一个变量中”,但这是错误的,因为,例如,
[st.integers().example()代表范围(20)]
生成不同的数字。另一个假设是,区间(20)的
[st.booleans().example()]类似于区间(20)]的
[bool(st.integers().example())
,因此几乎总是
正确的
,尽管我既不能证明也不能反驳这一点。(这些只是想法,我以前没有使用
假设
)那么
st.lists(st.booleans()).example()呢?这通常会返回
[]
,这是最简单的示例。此外,假设库中是否有特定的代码区域可以清楚地表明这是对这种行为的解释?我之前试着四处看看,发现了一些类似的东西,但没有真正找到我的方向。啊,太好了,我看到了。当我之前浏览的时候,我的眼睛并没有把那个部分挑出来。