【发布时间】:2019-02-02 09:03:22
【问题描述】:
我想知道是否有办法在一些特殊的“向量”之间建立关系。
例子:
假设这些是我的向量(我只会选择 3 个特殊向量):
a=[1,2,[1]]
b=[1,2,[2]]
c=[1,3,[1]]
并且我想在比较它们时添加以下规则(字典顺序):
我想说
a<b
因为
a[0]=b[0] and a[1]=b[1] but *a[2]<b[2]*
但我也想说
a<c
因为
a[0]=b[0] and a[1]<c[1] and a[2]<=c[2]
但请注意,“b”和“c”的情况有些不同,因为它们无法比较,因为即使
b[0]=c[0] and b[1]<c[1], the last term changes everything since b[2]>c[2]
换句话说,我应用的规则,将首先比较两个向量 x 和 y 的“正常”条目,如果向量 x 的某个条目大于向量 y 的某个条目,我们看看最后一个条目。如果向量x的最后一项大于或等于,那么我们说x>y,如果不是这样,那么x和y不具有可比性。
如果 x 和 y 的所有“正常”条目都相同,我们将比较最后一个条目。如果 x 的最后一项大于 y 的最后一项,我们也说 x>y。
我认为这与 while 循环有关。
【问题讨论】:
-
是否需要在自己的单项列表中包含第三个值?
-
那么您空间中的某些两个向量可能不可比较?听起来怪怪的。不保证在您空间中的向量上定义的集合是可订购的。
-
那么你想让
b < c和c < b都 为假吗?您可能想要定义一个可以覆盖__lt__等的类。来表示您的向量,而不仅仅是隐式使用列表。 -
是的,b 和 c 不可比较,所以 b
标签: python python-3.x function vector relation