这是一个简单的问题,但我在SO中找不到类似的问题.无论如何都是以Python的形式返回?(也许是简单的黑客攻击.)
返回参考说明:
def func(lst):
return reference of lst[2] somehow
func([7, 8, 9, 10]) # returns 9
func([7, 8, 9, 10]) = 11 # lst is changed to [7, 8, 11, 10]
Run Code Online (Sandbox Code Playgroud)
这种行为是否可以实现?可能有一些运算符重载?
C++中此用法的一个示例:在C++中通过引用返回值
Python 3 方法的复杂性是什么list.clear()?
这里没有给出: https : //wiki.python.org/moin/TimeComplexity
在文档中据说它与 等效del
a[:],但我不知道这个函数本身的复杂性。是O(n)还是O(1)?
我进去看了看listobject.c。找到了这个。
int
PyList_ClearFreeList(void)
{
PyListObject *op;
int ret = numfree;
while (numfree) {
op = free_list[--numfree];
assert(PyList_CheckExact(op));
PyObject_GC_Del(op);
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
这里看起来像O(n),但我不确定这是否是正确的代码。
我正在开发一个具有性能需求的程序,其中一个列表被反复填充和清空,我试图找到清空它的最佳方法(因为只有一种方法可以填充它)。
如果这个功能是O(n),我每次都会创建一个新列表,它有自己的成本,但我不知道更好的方法。
我想到的另一个问题是 Python 有一个垃圾收集器,所以如果我不释放这些对象(每次都创建新列表,通过重新分配变量名让另一个无人看管),Python 在后台执行删除操作(我是不确定此信息),所以我不会提高应用上述任何方法的速度,因为结果是相同的。
任何知识表示赞赏。谢谢。
我想NumPy在Fibonacci问题中使用它,因为它在矩阵乘法中的效率.您知道有一种方法可以使用矩阵查找斐波纳契数[[1, 1], [1, 0]].
我写了一些非常简单的代码但是在增加之后n,矩阵开始给出负数.
import numpy
def fib(n):
return (numpy.matrix("1 1; 1 0")**n).item(1)
print fib(90)
# Gives -1581614984
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?
注意: linalg.matrix_power也给出负值.
注2:我尝试了从0到100的数字.它在47之后开始给出负值.这是一个大的整数问题,因为NumPy是用C编码的吗?如果是这样,我怎么能解决这个问题?
编辑:使用常规python list矩阵linalg.matrix_power也给出了负面结果.另外,我要补充一点,47之后并非所有结果都是负数,而是随机发生.
Edit2:我尝试使用@ AlbertoGarcia-Raboso建议的方法.它解决了负数问题,但是出现了另一个问题.它给出了-5.168070885485832e+19我需要的答案-51680708854858323072L.所以我尝试使用int(),它将其转换为L,但现在似乎答案是不正确的,因为精度损失.
我的问题非常简单.
for循环是否评估它每次使用的参数?
如:
for i in range(300):
Run Code Online (Sandbox Code Playgroud)
python是否为此循环的每次迭代创建了300个项目的列表?
如果是,这是一种避免它的方法吗?
lst = range(300)
for i in lst:
#loop body
Run Code Online (Sandbox Code Playgroud)
对于像这样的代码示例也是如此.
for i in reversed(lst):
for k in range(len(lst)):
Run Code Online (Sandbox Code Playgroud)
是每次都应用反向过程,还是每次迭代计算的长度?(我问这个python2和python3)
如果没有,Python如何在迭代迭代时评估迭代的变化?
我有二维数组,X大小(500,10)和单维索引数组,Y其大小是500每个条目是X的相应行的正确值列的索引,例如,y(0)是2然后它意味着第一行X的第2列是正确的,同样y(3) = 4意味着第3行和第4列X具有正确的值.
我希望使用索引数组Y从X获取所有正确的值,而不使用任何循环,即使用向量化,在这种情况下输出应该是(500,1).但是,当我这样做时,X[:,y]它会提供输出(500,500).有人可以帮助我如何使用Y,PLZ正确索引数组X.
谢谢大家的帮助.
有没有一种方法可以在使用鼠标时
pygame.mouse.set_visible(False)
Run Code Online (Sandbox Code Playgroud)
被激活。当前,在尝试使用时,鼠标仅返回右下角的坐标。需要在隐藏鼠标的同时能够获取正确的坐标。
在他们的文档中找不到答案。
python ×6
python-3.x ×2
fibonacci ×1
for-loop ×1
matrix ×1
mouse ×1
numpy ×1
pygame ×1
python-2.7 ×1