【发布时间】:2017-06-12 11:58:06
【问题描述】:
我有一个用于进行数学计算的脚本,我在其中使用字典来表示多项式。最初我的代码是这样开始的:
p = {}
p[(0,0,0)] = 1
然后,概括地说,我将第二个命令替换为:
p[tuple(numpy.zeros((3,),dtype=int))] = 1
我不明白为什么这个单一的变化会影响程序的结果。这些有何不同?
【问题讨论】:
-
“这个单一的变化会影响程序的结果”你需要解释这句话。
-
@Dunham:
tuple(numpy.zeros((3,),dtype=int)) == (0,0,0)是True。所以这意味着两者是等价的。除了引用相等之外,两者的工作方式应该完全相同。 -
此外,也许更优雅的方法是使用
d[(0,)*3]。更紧凑... -
如果不描述究竟是什么不起作用,您可以看到阅读您的问题的任何人都很难理解它,对吧?看看您是否可以创建一个显示错误行为的最小示例,以满足您的好奇心。
-
@Dunham 不同之处在于
numpy版本创建了一个numpy.int64s 的元组,而不是常规的Pythonints;这不太可能产生影响,但在少数情况下可以,例如stackoverflow.com/questions/44302946/…
标签: python python-3.x numpy tuples