我在Windows 7上使用Python 3.2.当我打开Python shell时,我如何知道当前目录是什么以及如何将其更改为我的模块所在的另一个目录?
我正在Scala中做一个项目,但我对这门语言很新,并且有Java背景.我看到Scala没有ArrayList,所以我想知道Scala相当于Java的ArrayList被调用,以及Java和Scala版本之间是否存在任何重要差异.
编辑: 我不是在寻找特定的行为,而是内部表示(存储在数组中的数据,但整个数组不可见,只有您使用的部分).
我是Prolog的新手并注意到'和'给出了不同的行为,但我很好奇为什么.具体来说,加载文件时,?- ['test1.pl'].工作,而?- ["test1.pl"].不是.
我是Scala的新手,我正在尝试理解集合层次结构.我看到有"可变"和"一成不变"的集合之间的区别,但我不明白这是什么,其实就是在执行层面,以及如何这涉及到val和var.有人能给我一些见解吗?此外,每个集合类都有"可变"版本和"不可变"版本,还是有些类只能是"可变"或"不可变"?
我目前基于模块(例如foo依赖于模块的主程序bar)编译程序如下:
gfortran -c bar.f90
gfortran -o foo.exe foo.f90 bar.o
Run Code Online (Sandbox Code Playgroud)
这在当foo.f90且bar.f90位于同一目录中时工作正常.如何指定一个目录,gfortran应该寻找bar.o当我打电话use bar的foo.f90?(即我不想指定编译器应该bar.o专门链接,我只是想让它去找它.)
我正在用Python(3.2)做一个项目,我需要比较用户定义的对象.我习惯于Java中的OOP,在compareTo()类中定义一个方法,指定该类的自然顺序,如下例所示:
public class Foo {
int a, b;
public Foo(int aa, int bb) {
a = aa;
b = bb;
}
public int compareTo(Foo that) {
// return a negative number if this < that
// return 0 if this == that
// return a positive number if this > that
if (this.a == that.a) return this.b - that.b;
else return this.a - that.a;
}
}
Run Code Online (Sandbox Code Playgroud)
我对Python中的类/对象相当新,所以我想知道定义类的自然顺序的"pythonic"方法是什么?
在做一些生物信息学工作时,我一直在思考将对象实例存储在Numpy数组而不是Python列表中的后果,但在我所做的所有测试中,性能在每个实例中都更糟.我正在使用CPython.有谁知道原因?
特别:
numpy.ndarray(dtype=object)与常规Python列表有什么性能影响?我执行的初始测试表明,访问Numpy数组元素比通过Python列表迭代更慢,尤其是在使用对象方法时.[ X() for i in range(n) ]代替numpy.empty(size=n, dtype=object)?__slots__,如果这有任何影响.我需要Fortran(90)中的(真实)数组的深层副本,但我不确定如何获得一个,因为我不完全理解引用是如何工作的.直观地说,我希望这能得到我想要的东西:
do i=1,n
b(i) = a(i)
end do
Run Code Online (Sandbox Code Playgroud)
但是,最近我向我指出这b(1:n) = a(1:n)相当于上面的代码.直观地说,我希望这b(1:n) = a(1:n)只会导致引用b(1:n)指向a(1:n)内存中的位置.
是b(1:n) = a(1:n)深刻的副本?为什么?与基础参考相反的是b = a什么?
我循环浏览一个文件,如果我发现了什么,想在将控制权返回给主循环之前先读几行寻找内容.但是,我希望在我停止向前看时返回控制权.
示例代码:
for line in file:
line = line.strip()
llist = line.split()
if llist[0] == 'NUMS':
# some loop to read ahead and print nums on their own line
# until it finds END, then return control to the main for
# loop at the point where it stopped looking ahead.
Run Code Online (Sandbox Code Playgroud)
样本输入:
NUMS
1
2
3
4
5
END
SOME
MORE
STUFF
NUMS
6
7
8
9
0
END
Run Code Online (Sandbox Code Playgroud)
期望的输出:
1 2 3 4 5
6 7 8 9 0 …Run Code Online (Sandbox Code Playgroud) 我试图next在迭代器上使用该函数,但是,我在同一范围内有一个也被命名的局部变量next.显而易见的解决方案是重命名局部变量,但是,我对Python很新,所以我很想学习如何为next函数添加前缀,以便实现所需的行为.
我正在使用的代码看起来像这样:
for prev, curr, next in neighborhood(list):
if (prev == desired_value):
print(prev+" "+next)
desired_value = next(value_iterator)
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是Python 3.2.
python ×5
fortran ×2
python-3.x ×2
scala ×2
arraylist ×1
arrays ×1
class ×1
collections ×1
containers ×1
cpython ×1
dcg ×1
file ×1
fortran90 ×1
gfortran ×1
iso-prolog ×1
iterator ×1
java ×1
module ×1
numpy ×1
object ×1
oop ×1
performance ×1
prolog ×1
python-3.2 ×1
windows ×1