用Python2.7和3.5进行测试
for i in range(0, 1000000000):
pass
当我使用python3运行这段代码时,一切都很好(内存使用率低于3MB )。
但是通过python2内存使用是32 by (我的服务器只有32 by的ram)
如何为Python2.7修复这个问题?
因此,我正在努力学习Python,我认为实现这一目的的一个好方法是将我以前在MatLab中做过的问题集转换成python。下面是我正在使用的MatLab代码
% C14 halflife is 5726 years
% The time constant tau is t(1/2)/ln2 = 8260 y
N0=10000; %initialize N0
tau=8260; %Carbon 14
tmax=40000; %max time value, will be on the x-axis
% Generate data using exact values
t1=linspa
我最近开始自学python,并一直在使用这门语言进行在线算法课程。由于某些原因,我为本课程创建的许多代码非常慢(相对于我在过去创建的C/C++ Matlab代码而言),而且我开始担心我没有正确地使用python。
这里有一个简单的python和matlab代码来比较它们的速度。
MATLAB
for i = 1:100000000
a = 1 + 1
end
Python
for i in list(range(0, 100000000)):
a=1 + 1
matlab代码大约需要0.3秒,python代码大约需要7秒。这是正常的吗?我针对
这当然不是特定于python的问题,但我正在寻找一个特定于python的答案--如果有的话。它是关于将具有大量变量的代码块放入函数(或类似的?)。让我假设这段代码
##!/usr/bin/env python
# many variables: built in types, custom made objects, you name it.
# Let n be a 'substantial' number, say 47.
x1 = v1
x2 = v2
...
xn = vn
# several layers of flow control, for brevity o
运行python程序时出现错误:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in <module>
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__
File "C:\Program
我正在尝试使用ctype从内部python结构中提取数据。也就是说,我正在尝试读取xrange中的4个字段:
typedef struct {
PyObject_HEAD
long start;
long step;
long len;
} rangeobject;
在python中有什么标准的方法来获取这些字段吗?
(坦白地说,我正在CodeAcademy上学习Python教程,并且正在使用他们基于web的IDE。)
def factorial(x):
bang = 1
for num in x:
bang = bang * num
return bang
在java中,这可以从小于2,147,483,647的数字生成阶乘。我认为它应该在python中工作,但是它不工作。相反,我得到了错误:
追踪(最近一次调用):文件"python",第3行,在阶乘TypeError:'int‘对象是不可迭代的
也许这里有我不理解的地方,或者
我有一个如下所示的函数。我在python中使用xlrd。每当我执行“打印路径”函数时,就会收到太多的路径迭代。本质上,我要做的是比较excel中的两列,然后打印出第三列。这是完美的,除了第三次打印了太多次,我相信问题是嵌套循环。
def question():
for x in xrange(sheet.nrows):
buddy = sheet.cell_value(x, 13)
newton = buddy.split(',')
james = sheet.col_values(15)
fred = s
在Python中提倡使用for i in xrange(...)-style循环构造的理由是什么?对于简单的整数循环,间接费用的差别很大。我使用两段代码进行了一个简单的测试:
文件idiomatic.py
#!/usr/bin/env python
M = 10000
N = 10000
if __name__ == "__main__":
x, y = 0, 0
for x in xrange(N):
for y in xrange(M):
pass
文件cstyle.py
#!/usr/bin/env python
python中这个阶乘函数的空间复杂度应该是多少?
def fact(n):
product = 1
for i in range(2, n+1):
product = product * i
return product
在像C这样的其他语言中,同样的想法将导致O(1)空间复杂度,但对于这个例子,范围(2,n+1)是否会导致O(n)空间复杂度?
下面我编写了这个简单的代码来比较Python和Fortran的速度。
import time
start = time.time()
x = 0
for i in range(1,1000000000):
x = x + i
x = 0
end = time.time()
print end - start
我设置了x =0,因为在Fortran中它溢出了。当我用Fortran运行代码时,它将在9秒内返回答案,但是当我用Python运行代码时,Python会占用我的系统的所有24 it内存和程序崩溃。
有什么问题吗?
我用Python语言编写了简单的程序,使用了多处理模块。它工作得很好,但是当我为每个worker传递1E+10迭代时,出现了一些问题,并且结果是错误的。我不明白问题出在哪里,因为在1E+9迭代中一切都很好!
import sys
from multiprocessing import Pool
from random import random
def calculate_pi(iters):
""" Worker function """
points = 0 # points inside circle
fo
除了将一个Python生成器读入列表之外,有没有办法在两个Python生成器中找到公共项?您不能对项目的顺序做任何假设。
举个不好的例子:
import random
a = (random.randint(1, 50000) for _ in xrange(300))
b = (random.randint(3500, 3700) for _ in xrange(50))
# do A and B have any elements in common?
我在一个文件里有这个代码
class Sudoku(dict):
COLUMNS = [
{(x, y) for y in xrange(9)} for x in xrange(9)
]
当我运行python broken.py时,我得到了回溯:
Traceback (most recent call last):
File "U:\broken.py", line 1, in <module>
class Sudoku(dict):
File "U:\broken.py", line 3, in Su
我编写了一段代码,为了测试它,我用一些输入调用了名为“注释”的函数n次,其中n= 2000000000,但似乎出现了错误。
Python版本= 2.7.6
代码:-
for i in range(2000000000):
inp = getlis(input1)
print inp,input2,Comment(inp,input2)
inp = []
产出:-
Traceback (most recent call last):
File "cha.py", line 103, in <module>
for i in range(2
我有一个有元组的python列表,我想要检查列表中所有元组中元组的第一个元素,我设法做到了如下所示:
x = [('a',1), ('b',2), ('c',3)]
if 'a' in ([y[0] for y in x]):
//how to get the index of the tuple that 'a' exist
我想要在元组的索引中,'a‘,如上面的例子存在。
最近我开始使用Python3,它缺少xrange带来的伤害。
简单的例子:
Python2:
从时间导入时间as t def count():st = t() x for x in xrange(10000000) if x%4 == 0 et = t() print et-st count()
Python3:
from time import time as t def xrange(x):return iter(range(x)) def count():st = t() x for x in xrange(10000000) if x%4 == 0 et = t() print (et
我有这样的情况:
#!/usr/bin/python2.7
y = [[0 for i in xrange(size_of_array)] for j in xrange(size_of_array)]
offset_flag = 0
for i in xrange(size_of_array):
for j in xrange(size_of_array):
y[i][j] = starting_no + j + offset_flag
offset_flag += j + 1
我需要嵌套for循环的列表理解,但它也应该处理以下情况:
offset_fla
下面是我从某人关于python闭包的博客中得到的一个例子。我在python2.7中运行它,得到的输出与我期望的不同。
flist = []
for i in xrange(3):
def func(x):
return x*i
flist.append(func)
for f in flist:
print f(2)
我的期望输出是: 0,2,4
但是输出是: 4,4,4
有没有人能帮我解释一下?
提前谢谢你。
作为Python的新手,我花了很长时间弄清楚这两行代码是做什么的:
for i in [j for j in xrange(0, N) if [k for k in xrange(j) if now[k] == now[j]] == []]:
for j in [k for k in xrange(1, K + 1) if [l for l in xrange(i) if now[l] == k] == []]:
有没有办法重写这段代码,这样像我这样的菜鸟就能理解它?谢谢。
我在用Python填写列表时遇到了一些问题。我不断得到一个列表索引超出范围的错误。len(network)的输出是7,所以我认为从0到6填充它应该可以得到一个7x7的列表。
def fillNodeTable():
nodeTable = []
for x in xrange(0, (len(network) -1)):
for y in xrange(0, (len(network) -1)):
nodeTable[x][y].append(Node)
print nodeTable
所以我最终得到了这个,它起作用了。
n = len(network)
nod
def main():
range_dur = 0
xrange_dur = 0
def do_range():
start = time.time()
for i in range(2,10):
print i
range_dur += time.time() - start <---- cant see
def do_xrange():
start = time.time()
for i in xrange(2,10):
为了让这段代码工作,它必须重复可变数量(n)次。它可能会在程序运行的任何时候改变。我对python非常陌生,对编程也是相当陌生,所以我真的不知道从哪里开始。
def valueThree():
name = input("What is the name?")
valueOne = int(input("What is valueOne?"))
valueTwo = int(input("What is valueTwo?"))
valueThree = valueOne/valueTwo
name_val