当前位置: 首页 > 面试题库 >

避免在Python模块Sympy中对args进行排序

何安宜
2023-03-14
问题内容

我目前正在开发一种微分运算符sympy,可以将其以矩阵形式放置。在这种情况下,args创建Mul对象时列表的顺序非常重要,以确保仅在需要时才执行区分。

问题是,完成以下操作后:

input = (t,z,x)
Mul(*input).args

(t, x, z)之所以返回,是因为进行了一些重排args。如何避免args被排序?


问题答案:

为什么arg的顺序对正确来说很重要?

防止这种情况的唯一方法是将符号设置为不可交换的(x = Symbol('x', commutative=False))。SymPy对象通过比较进行比较args,因此x*y*z == y*x*z要正常工作,必须对args进行规范排序。有一些尝试使此工作在不进行显式排序的情况下进行(主要是出于性能方面的考虑),但是请注意,即使我们这样做,也无法保证arg的顺序,特别是如果您对arg顺序执行任何类型的操作表达。函数在SymPy中重建表达式的情况非常普遍,通常会使用与原始文件不相关的其他顺序。



 类似资料:
  • 问题内容: 我有一个,我需要能够对列进行重新排序。但是,我希望第一列不能重新排序。我使用以下命令来启用重新排序: 现在可以对列进行重新排序,包括不需要的第一列。有什么方法可以锁定第一列? 我已经看到一些使用两个表的解决方案,其中第一列在单独的表中,但是也许有更好/更简单的方法。 问题答案: 我认为您需要重写中的方法。在类有一个方法,你应该能够看到,以确定它是否是你的固定列,然后你应该能够取消事件。

  • 问题内容: 我正在尝试获得一个函数,如果您对它进行排序(列表名),它将对该列表中的所有数字进行从最小到最大的排序。 我不确定我的问题是什么,但是我需要一些帮助,因为输出实际上并不是最小到最大,对于输出的前两个数字来说,它最小到最大。 范例: 如果list中有23、212、44个,而不是我对它进行排序,则输出将是这样。 输出: 212,23,44 它 应该是 23、44、212。 码: 更多代码:

  • 问题内容: 我有这个清单 但是现在我希望列表按以下方式排序: 如您所见,无论每个数字具有什么符号,我都希望从高到低排序,但是保持符号清晰吗? 问题答案: 使用的关键功能或:

  • 问题内容: 我是JavaEE的新手,并试图通过检查数据库来学习制作一个简单的登录页面。这是代码示例: 它应该容易受到SQL注入的侵害吧?我可以通过在ASP.NET中使用参数化查询来做到这一点,如下所示: 有没有办法像这样在Java中使用参数化查询?谁能以参数化形式使用该查询来避免SQL注入? 谢谢 问题答案: 是的,你可以做到这一点;例如:

  • 问题内容: 我有一个字典,其中每个键都引用一个int值。根据值将键排序到列表中的最佳方法是什么? 问题答案: mydict = {‘a’:1,’b’:3,’c’:2} >>> sorted(mydict, key=lambda key: mydict[key]) [‘a’, ‘c’, ‘b’]

  • 我试图排序列的. csv文件。这些是列的名称和顺序: 这是我想要的订单: 当前我的代码如下所示: 使用我当前的代码,我得到以下列顺序的结果: 所以我已经想出了我必须传递一个函数给排序函数来指定我希望它如何排序,但是我找不到一个函数来做这件事。 非常感谢您的任何意见!