相关疑难解决方法(0)

如何从集合中检索元素而不删除它?

假设如下:

>>> s = set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

如何获得的值(任意值)出来s而不做s.pop()?我想把这个项留在集合中,直到我确定我可以删除它 - 我只能在异步调用另一个主机后才能确定.

又快又脏:

>>> elem = s.pop()
>>> s.add(elem)
Run Code Online (Sandbox Code Playgroud)

但是你知道更好的方法吗?理想情况下在恒定的时间.

python set

381
推荐指数
10
解决办法
37万
查看次数

如何从Python集中选择2个随机项?

我目前有一个n大小的Python集,其中n> = 0.是否有快速的1或2行Python解决方案来做到这一点?例如,该集合将如下所示:

fruits = set(['apple', 'orange', 'watermelon', 'grape'])
Run Code Online (Sandbox Code Playgroud)

目标是从上面选择2个随机项目,上述集合可能包含0个,1个或更多项目.我能想到的唯一方法是将集合转换为列表(可变),从中可以访问集合长度内的2个随机唯一索引.

python random

145
推荐指数
1
解决办法
12万
查看次数

设置迭代顺序因运行而异

为什么Python集的迭代顺序(具有相同的内容)因运行而异,以及从运行到运行使其一致的选项是什么?

我知道Python集的迭代顺序是任意的.如果我将'a','b'和'c'放入一个集合然后迭代它们,它们可能会以任何顺序返回.

我观察到的是,在一个程序的运行中,顺序保持不变.也就是说,如果我的程序连续两次迭代同一个集合,那么我两次都得到相同的顺序.但是,如果我连续两次运行程序,则顺序会从运行更改为运行.

不幸的是,这打破了我的一个自动化测试,它简单地比较了我的程序的两次运行的输出.我不关心实际的顺序,但我希望它在运行之间保持一致.

我提出的最佳解决方案是:

  1. 将该集复制到列表.
  2. 对列表应用任意排序.
  3. 迭代列表而不是集合.

有更简单的解决方案吗?

注意:我在StackOverlow上发现了类似的问题,但是没有一个能解决从运行到运行获得相同结果的特定问题.

python iteration set

20
推荐指数
5
解决办法
1万
查看次数

标签 统计

python ×3

set ×2

iteration ×1

random ×1