我一直在研究udacity下面显示的代码.我试图找出为什么当通过调用list(p)创建'g'时,列表'g'和'p'作为相同的列表.当在移动函数中调用print语句(print [i] [j])时,它表示当'g'被改变时'p'被覆盖.我刚开始用python编程,我很感激任何帮助.提前致谢.
colors = [['red', 'green', 'green', 'red' , 'red'],
['red', 'red', 'green', 'red', 'red'],
['red', 'red', 'green', 'green', 'red'],
['red', 'red', 'red', 'red', 'red']]
measurements = ['green', 'green', 'green' ,'green', 'green']
motions = [[0,0],[0,1],[1,0],[1,0],[0,1]]
sensor_right = 0.7
p_move = 0.8
def show(p):
for i in range(len(p)):
print p[i]
total = len(colors[0])*len(colors)
for i in range(len(colors)):
p.append([])
for j in range(len(colors[i])):
p[i].append(1./total)
print p
def move(g,c,r):
t = list(g)
for i in range(len(g)):
for j in range(len(g[i])):
print p[i][j] …Run Code Online (Sandbox Code Playgroud) 我有一个我正在使用的Fortran代码库,它非常庞大.我不是Fortran程序员,所以我知道我在这里做的并不正确.
我正在尝试创建并初始化一个包含160万个整数的数组.我无法在Fortran中初始化(使用ifort或gfort),因为我要么有太多的行连续,要么行太长.
很自然地,我切换到C并编写了一个函数来初始化一个数组,它在几秒钟内编译就没有问题了.现在我正在尝试将两者正确地连接在一起.我在这里创建了一个小测试用例来简化操作.以下是我正在使用的三个文件:
INIT.C
void c_init_()
{
static const int f_init_g[1600000] =
{
3263, 322, 3261, 60, 32249, 32244, 3229, 23408, 252407, 25326,
25805, 25723, 25562, 25787, 4549, 32248, 32244, 32243, 253207, 21806,
---------------------------------------------------------------------
25805, 25723, 25562, 25787, 4549, 32248, 32244, 32243, 253207, 21806
};
}
Run Code Online (Sandbox Code Playgroud)
init_mod.f90
MODULE INIT_MOD
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
SAVE
TYPE :: INIT_TYPE
INTEGER (C_INT), DIMENSION(1600000) :: INIT
END TYPE INIT_TYPE
TYPE (C_PTR), BIND(C,NAME="f_init_g") :: INIT_CP
TYPE (INIT_TYPE), POINTER :: INIT_FP
END MODULE INIT_MOD …Run Code Online (Sandbox Code Playgroud)