小编yuv*_*gin的帖子

用于创建集的Python性能比较 - set()与{} literal

关于这个问题的讨论让我感到疑惑,所以我决定运行一些测试并比较创建时间set((x,y,z)){x,y,z}在Python中创建集合(我使用的是Python 3.7).

我使用time和比较了这两种方法timeit.两者都是一致*,结果如下:

test1 = """
my_set1 = set((1, 2, 3))
"""
print(timeit(test1))
Run Code Online (Sandbox Code Playgroud)

结果:0.30240735499999993

test2 = """
my_set2 = {1,2,3}
"""
print(timeit(test2))
Run Code Online (Sandbox Code Playgroud)

结果:0.10771795900000003

所以第二种方法几乎比第一种方法快3倍.这对我来说是一个非常惊人的差异.幕后发生了什么,以这种方式优化设置文字的性能set()?哪种情况最合适?

*注意:我只显示timeit测试结果,因为它们在许多样本上取平均值,因此可能更可靠,但测试时的time结果在两种情况下都显示出类似的差异.


编辑:我知道这个类似的问题,虽然它回答了我原来问题的某些方面,但它没有涵盖所有这些问题.在问题中没有解决集合,并且由于空集在python中没有文字语法,我很好奇(如果有的话)使用文字的集合创建与使用该set()方法不同.另外,我想知道的是如何处理的元组参数set((x,y,z)会在幕后,什么是运行时可能产生的影响.coldspeed的最佳答案有助于澄清问题.

python performance set python-3.x

18
推荐指数
1
解决办法
1193
查看次数

Total of all numbers from 1 to N will always be zero

The problem is I have to print all combinations of a sequence of numbers from 1 to N that will always result to zero. It is allowed to insert "+" (for adding) and "-" (for subtracting) between each numbers so that the result will be zero.

//Output
N = 7

1 + 2 - 3 + 4 - 5 - 6 + 7 = 0
1 + 2 - 3 - 4 + 5 + 6 - 7 = 0 …
Run Code Online (Sandbox Code Playgroud)

java algorithm

6
推荐指数
1
解决办法
1436
查看次数

在矩形上均匀分布 N 个点

我需要在具有一定宽度和高度的矩形上平均分配 N 个点。

前任。给定一个 10x10 的盒子和 100 个点,点将设置为:

(1,1)  (1,2)  (1,3)  (1,4)  (1,5)  (1,6)  (1,7)  (1,8)  (1,9)  (1,10)
(2,1)  (2,2)  (2,3)  (2,4)  (2,5)  (2,6)  (2,7)  (2,8)  (2,9)  (2,10)
(3,1)  (3,2)  (3,3)  (3,4)  (3,5)  (3,6)  (3,7)  (3,8)  (3,9)  (3,10)
...
...
Run Code Online (Sandbox Code Playgroud)

我如何将其概括为任何 N 点、宽度和高度组合?

注意:它不需要是完美的,但很接近,无论如何我都会随机化一点(从 X 和 Y 轴上的这个“起点”移动点 +/- x 像素),所以有一个剩下的几个点在最后随机添加可能就好了。

我正在寻找这样的东西(准随机):

准随机

algorithm height equals points width

4
推荐指数
1
解决办法
1901
查看次数

标签 统计

algorithm ×2

equals ×1

height ×1

java ×1

performance ×1

points ×1

python ×1

python-3.x ×1

set ×1

width ×1