我想从字符串中读取一些字符并将其放入其他字符串中(就像我们在C中所做的那样).
所以我的代码如下所示
import string
import re
str = "Hello World"
j = 0
srr = ""
for i in str:
srr[j] = i #'str' object does not support item assignment
j = j + 1
print (srr)
Run Code Online (Sandbox Code Playgroud)
在C中代码可能是
i = j = 0;
while(str[i] != '\0')
{
srr[j++] = str [i++];
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中实现相同的功能?
我有一串原始HTTP,我想表示对象中的字段.有没有办法解析HTTP字符串中的各个标头?
'GET /search?sourceid=chrome&ie=UTF-8&q=ergterst HTTP/1.1\r\nHost: www.google.com\r\nConnection: keep-alive\r\nAccept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\nUser-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.45 Safari/534.13\r\nAccept-Encoding: gzip,deflate,sdch\r\nAvail-Dictionary: GeNLY2f-\r\nAccept-Language: en-US,en;q=0.8\r\n
[...]'
Run Code Online (Sandbox Code Playgroud) 我知道如何使用cx_freeze将CPython文件编译为exe,但是可以使用PyPy编译一个简单的程序到Exe吗?
我有ubuntu 11.10.我从这个启动板存储库中安装了pypy:https://launchpad.net/~pypy 计算机上已经有python,而python有自己的pip.如何为pypy安装pip,如何以不同于python的方式使用它?
我知道,当它推出时,很多人都不认为它很容易被捡起来.我想知道那些改变了.许多主要模块和库是否支持Python 3?它是否正在获得认可,还是人们大多坚持使用2.x?
GAE支持传入和传出电子邮件:http://code.google.com/appengine/docs/python/mail/
是否为GAE编写了任何开源电子邮件客户端?处理编码问题,附件,按对话分组等的东西
假设我们有一个类'Parent',由于某种原因已__new__定义,并且继承了它的类'Child'.(在我的情况下,我试图继承我无法修改的第三方课程)
class Parent:
def __new__(cls, arg):
# ... something important is done here with arg
Run Code Online (Sandbox Code Playgroud)
我的尝试是:
class Child(Parent):
def __init__(self, myArg, argForSuperclass):
Parent.__new__(argForSuperclass)
self.field = myArg
Run Code Online (Sandbox Code Playgroud)
但同时
p = Parent("argForSuperclass")
Run Code Online (Sandbox Code Playgroud)
按预期工作
c = Child("myArg", "argForSuperclass")
Run Code Online (Sandbox Code Playgroud)
失败,因为'Child'试图调用__new__它从'Parent'而不是它自己的__init__方法继承的方法.
为了获得预期的行为,我必须在"儿童"中进行哪些更改?
我想将一个char指针数组传递给C函数.
我指的是http://docs.python.org/library/ctypes.html#arrays
我写下面的代码.
from ctypes import *
names = c_char_p * 4
# A 3 times for loop will be written here.
# The last array will assign to a null pointer.
# So that C function knows where is the end of the array.
names[0] = c_char_p('hello')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
TypeError:'_ typeype.PyCArrayType'对象不支持项目分配
知道如何解决这个问题吗?我想与之交流
c_function(const char** array_of_string);
Run Code Online (Sandbox Code Playgroud) 有没有办法使用pypy只是为了编译一个函数而不是我的python程序的其余部分?
我有一个已知的瓶颈,我花了99%的CPU时间(主要包含整数移位和XOR)并在Python中尽可能地优化它.除非绝对必要,否则我不想编写和维护C库.
现在我正在使用Anaconda Python,这是一个普通的python,有很多库.我会使用pypy,除非我不想确保我的所有程序的其余部分都能正常工作.
有没有办法只在一个Python函数上显式运行JIT?
编辑:该函数是GF2(Galois字段)中的模块化乘法步骤
特别:
def _gf2mulmod(x,y,m):
z = 0
while x > 0:
if (x & 1) != 0:
z ^= y
y <<= 1
y2 = y ^ m
if y2 < y:
y = y2
x >>= 1
return z
Run Code Online (Sandbox Code Playgroud)
它需要为bigints工作,所以我不确定如何重写为Cython兼容.
我刚刚尝试了numba的@autojit,但它失败了,因为它不知道要使用哪些变量类型并假设小整数.我似乎无法弄清楚如何告诉它使用标准的Python bigints.
Traceback (most recent call last):
File "/Users/jason_s/Documents/python/libgf2/src/libgf2/gf2.py", line 440, in <module>
dlog43 = GF2DiscreteLog(0x100000000065)
File "/Users/jason_s/Documents/python/libgf2/src/libgf2/gf2.py", line 295, in __init__
factors = _calculateFactors(poly)
File "/Users/jason_s/Documents/python/libgf2/src/libgf2/gf2.py", line 264, in _calculateFactors
if (e1 …Run Code Online (Sandbox Code Playgroud) 我正在使用python来做一些贝叶斯统计.我已经在python和Fortran 95中编写了它.Fortran代码更快...就像100倍.我期望Fortran更快,但我真的希望通过使用numpy我可以获得python代码接近,可能在2的因素之内.我已经分析了python代码,看起来大部分时间用于执行以下操作:
scipy.stats.rvs:从分发中随机抽取.我这样做~19000次,总时间为3.552秒
numpy.slogdet:计算矩阵行列式的对数.我这样做~10,000,总共需要2.48秒
numpy.solve:解决一个线性系统:我称这个例程为10,000次,总时间为2.557秒
总的来说,我的代码运行时间约为11秒,而我的fortran代码运行时间为.092秒.你在开玩笑吗?我真的不想在我对python的期望中变得不切实际,而且我当然不希望我的python代码能够像Fortran一样快......但是速度要慢于100倍.Python必须是能做得比这更好.万一你好奇,这是我的探查器的完整输出:(我不知道为什么它把文本分成几个块)
1290611 function calls in 11.296 CPU seconds
Ordered by: internal time, function name
ncalls tottime percall cumtime percall filename:lineno(function)
18973 0.864 0.000 3.552 0.000 /usr/lib64/python2.6/site-packages/scipy/stats/distributions.py:484(rvs)
9976 0.819 0.000 2.480 0.000 /usr/lib64/python2.6/site-packages/numpy/linalg/linalg.py:1559(slogdet)
9976 0.627 0.000 6.659 0.001 /bluehome/legoses/bce/bayes_GP_integrated_out/python/ce_funcs.py:77(evaluate_posterior)
9384 0.591 0.000 0.753 0.000 /bluehome/legoses/bce/bayes_GP_integrated_out/python/ce_funcs.py:39(construct_R_matrix)
77852 0.533 0.000 0.533 0.000 :0(array)
37946 0.520 0.000 1.489 0.000 /usr/lib64/python2.6/site-packages/numpy/core/fromnumeric.py:32(_wrapit)
77851 0.423 0.000 0.956 0.000 /usr/lib64/python2.6/site-packages/numpy/core/numeric.py:216(asarray)
37946 0.360 0.000 0.360 0.000 :0(all)
9976 0.335 0.000 2.557 0.000 /usr/lib64/python2.6/sitepackages/scipy/linalg/basic.py:23(solve)
107799 …Run Code Online (Sandbox Code Playgroud) 虽然我知道有前途的大转速增益可导致让利起伏的项目,我没有看到一个路线图的方式多为加快CPython的和/或PyPy.
是否有计划的东西可以大大提高核心解释器的速度(例如--with-computed-gotos)?他们的标准库怎么样(例如C中的Decimal,C中的IO)?
我知道HotPy(2)概述了加速CPython的计划,但这听起来像是一个单人项目,在核心CPython中没有太多牵引力.
PyPy有一些关于性能不佳的信息,但我发现文档中的加速没有大的目标.
那么,是否有已知的目标可以为Python实现带来巨大的性能提升?
我想基于另一个变量设置变量.在我的情况下,var1可以是"mean","sum"或"max"(从gui解析的输入).根据这些字符串,我想设置(有条件地)另一个变量; 如:如果var1是"mean"则var2 = 2,如果var1 ="sum"则var2 = 4,如果var1 ="max"则var2 = 6.
最好的方法是什么(初学者)?如果我在if else过程中使用它,我需要使变量全局使用它们也在if之外吗?有推荐的程序吗?
python ×12
pypy ×5
jit ×2
performance ×2
compilation ×1
ctypes ×1
email ×1
exec ×1
fortran ×1
http-headers ×1
inheritance ×1
numba ×1
pip ×1
python-3.x ×1
string ×1
ubuntu ×1
variables ×1
webmail ×1