在Python 2.7中,我定义了一个空的新式类:
In [43]: class C(object): pass
....:
Run Code Online (Sandbox Code Playgroud)
然后创建新类的实例列表:
In [44]: c = [C() for i in xrange(10)]
Run Code Online (Sandbox Code Playgroud)
然后尝试对列表进行排序:
In [45]: sorted(c)
Out[45]:
[<__main__.C object at 0x1950a490>,
<__main__.C object at 0x1950a4d0>,
...
<__main__.C object at 0x1950aad0>]
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,排序并没有抱怨,即使我没有定义比较实例的方法C:
In [46]: dir(C())
Out[46]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__']
Run Code Online (Sandbox Code Playgroud)
到底发生了什么,以及这个 - 可以说是令人惊讶的 - 行为的理由是什么?
我有一个多线程Java程序,可以在几秒钟内创建数百个临时文件.这些文件放在中/tmp并使用命名System.nanoTime().
文件名是否保证唯一?
直观地说,在Java中,实例变量初始化器按它们在类声明中出现的顺序执行.
这肯定是我正在使用的JDK中的情况.例如,以下内容:
public class Clazz {
int x = 42;
int y = this.z;
int z = this.x;
void print() {
System.out.printf("%d %d %d\n", x, y, z);
}
public static void main(String[] args) {
new Clazz().print();
}
}
Run Code Online (Sandbox Code Playgroud)
打印42 0 42(换句话说,y选择默认值z).
这个订单真的有保证吗?我一直在查看JLS,但找不到任何明确的确认.
我有一个二进制文件,其中包含n*m32位浮点的密集矩阵.将它读入Fortran排序的numpy数组的最有效方法是什么?
该文件的大小为数千兆字节.我控制格式,但它必须是紧凑的(即大约4*n*m字节长度),并且必须易于从非Python代码生成.
编辑:该方法必须直接生成Fortran排序矩阵(由于数据的大小,我无法创建C有序矩阵,然后将其转换为单独的Fortran排序副本.)
我试图计算a^(1/n),其中^表示取幂.
但是,以下内容:
Math.pow(8, 1/3)
Run Code Online (Sandbox Code Playgroud)
返回1.0而不是返回2.0.
这是为什么?
请考虑以下numpy代码:
A[start:end] = B[mask]
Run Code Online (Sandbox Code Playgroud)
这里:
A并且B是具有相同列数的2D数组;start并且end是标量;mask 是1D布尔数组;(end - start) == sum(mask).原则上,上述操作可以使用O(1)临时存储,通过B直接复制元素来进行A.
这是实际发生的事情,还是numpy构建一个临时数组B[mask]?如果是后者,是否有办法通过重写声明来避免这种情况?
class Animal(object):
def eat(self):
print("I eat all")
class C(object):
def eat(self):
print("I too eat")
class Wolf(C, Animal):
def eat(self):
print("I am Non Veg")
super(Wolf, self).eat()
Animal.eat(self)
w = Wolf()
w.eat()
Run Code Online (Sandbox Code Playgroud)
我正在学习python中的多重继承,我想使用方法从派生类访问Animal和方法.Ceatsuper
super内部调用C 类方法的默认调用eat,但调用Animal我使用的类方法.Animal.eat(self)我的问题是如何Animal使用super方法调用类方法.
我有一个ZIP存档,嵌入在一个更大的文件中.我知道存档在较大文件中的起始偏移量及其长度.
是否有任何Java库可以让我直接读取存档中包含的文件?我正在思考ZipFile.getInputStream().不幸的是,ZipFile这个用例不起作用,因为它的构造函数需要一个独立的ZIP文件.
出于性能原因,我无法在打开之前将ZIP achive复制到单独的文件中.
编辑:为了清楚,我确实可以随机访问该文件.
现代FPU用什么方法来计算超越函数?
例如,英特尔CPU提供指令,例如FSIN,FCOS,FYL2X等我很好奇,什么样的算法将用于实际的硬件实现这些.
我天真的猜测是泰勒系列可能与一些查找表相结合,但这只不过是一个疯狂的猜测.请赐教.
PS这个问题比英特尔硬件更普遍.
python ×5
java ×4
numpy ×3
large-data ×2
comparison ×1
division ×1
file ×1
fork ×1
fpu ×1
hardware ×1
large-files ×1
math ×1
object ×1
performance ×1
scipy ×1
time ×1
zip ×1