现在我将vector3值表示为列表.有没有办法减去其中2个像vector3值,比如
[2,2,2] - [1,1,1] = [1,1,1]
Run Code Online (Sandbox Code Playgroud)
我应该使用元组吗?
如果它们都没有在这些类型上定义这些操作数,我可以改为定义它吗?
如果没有,我应该创建一个新的vector3类吗?
为什么提出此问题呢 ?
我试图回答这个问题:检查所有值是否作为字典中的键存在,并提供比生成器理解更好的东西all(Python 循环,即使在理解中,与某些函数执行的隐式循环相比,也会减慢执行速度):
all(i in bar for i in foo)
Run Code Online (Sandbox Code Playgroud)
其中bar是一个字典,foo是一个列表,通过使用set.issubset(转换为setoffoo才能使用foo.issubset(bar)),并且没有成功击败解决all方案的时代(除非两个容器都转换为sets)。
我的问题:
来自以下文档set:
请注意,union()、intersection()、difference() 和 symmetry_difference()、issubset() 和 issuperset() 方法的非运算符版本将接受任何 iterable 作为参数。相反,基于运算符的对应部分需要设置其参数。这排除了像 set('abc') 和 'cbs' 这样容易出错的结构,有利于更具可读性的 set('abc').intersection('cbs')。
好的,但性能实际上取决于参数的类型,即使复杂性并不如此(Python 的复杂性 issubset()):
import timeit
foo = {i for i in range(1, 10000, 2)}
bar = foo - {400}
n=10000
x = timeit.timeit(setup="foo = {str(i) for i …Run Code Online (Sandbox Code Playgroud) 我正在研究一个模块,该模块依赖于检查2个列表中是否存在任何对象.该实现应该是在Python中.
考虑简化的对象def:
class Foo(object):
def __init__(self, attr_one=None, attr_two=None):
self.attr_one = attr_one
self.attr_two = attr_two
def __eq__(self, other):
return self.attr_one == other.attr_one and self.attr_two == other.attr_two
Run Code Online (Sandbox Code Playgroud)
我有两个单独的列表,可以封装类Foo的多个实例,如下所示:
list1 = [Foo('abc', 2), Foo('bcd', 3), Foo('cde', 4)]
list2 = [Foo('abc', 2), Foo('bcd', 4), Foo('efg', 5)]
Run Code Online (Sandbox Code Playgroud)
我需要弄清楚一个列表中存在的对象,而另一个列表中的对象基于attr_one.在这种情况下,下面给出了第一个列表中存在的项目和第二个列表中缺失的项目的期望输出.
`['Foo('bcd', 3), Foo('cde', 4)]`
Run Code Online (Sandbox Code Playgroud)
同样,列表2中的项目也不在列表1中
[Foo('bcd', 4), Foo('efg', 5)]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法匹配attr_one的基础.
List 1 List 2
Foo('bcd', 3) Foo('bcd', 4)
Foo('cde', 4) None
None Foo('efg', 5)
Run Code Online (Sandbox Code Playgroud)