【发布时间】:2015-07-18 02:57:11
【问题描述】:
我是 Python 的新手,我想迭代一个数组以根据前面的元素计算下一个元素。我可以用 C++ 的方式来思考这个问题,但是如何在 Python 中使用 Numpy 或 Pandas 来实现这一点?我知道类似的方法是使用移位,但这种方法似乎效率不高。
以下是一个简单的斐波那契示例:
int arr[10];
arr[0] = 1;
arr[1] = 1;
int* pt = &arr[2]; <--get a iterator like a moving pointer
int count = 8;
while (count > 0)
{
*pt = pt[-1] + pt[-2]; <--access previous k element based on current index
count--;
pt++; <--point to next element
}
for (int i = 0; i < 10; i++)
cout << arr[i] << endl;
列表:
L = [1, 1]
while len(L) != 10:
L.append(L[-1] + L[-2]) <--But I have to append element every time
print L
【问题讨论】:
-
你知道如何在 Python 中创建列表吗?您可以使用其
append方法附加到它,并将最后两个元素作为l[-1]和l[-2]。 -
您需要快速插入吗?也就是说,您是否特别需要链表结构?还是可以接受动态数组(连续内存)?如果你主要是迭代而不是插入(或者你所有的插入都在最后),那么 Python 的内置列表对象将是要走的路。
-
可以预分配底层数组:
L = 10 * [0]; L[0] = L[1] = 1 -
如果列表原本是固定大小的怎么办?
-
这个 SO 中有很多 Python 选项,包括基于列表的选项。不过没有人使用指针:stackoverflow.com/questions/494594/…
标签: python c++ arrays numpy pandas