Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重新编写此代码的有效方法?_Python_Performance - Fatal编程技术网

Python 重新编写此代码的有效方法?

Python 重新编写此代码的有效方法?,python,performance,Python,Performance,我必须用不同的L值来衡量它所花费的时间,所以我想优化我的代码。我要做的是用直径为d的周期点(x,y,z)填充一个立方体(lxl),它们是相同的。到目前为止,这就是我所拥有的: L=10 d=2 x,y,z = 0,0,0 counter=0 with open("question1.xyz","w") as f: while x<=L-d: while y<=L-d: while z<=L-d:

我必须用不同的L值来衡量它所花费的时间,所以我想优化我的代码。我要做的是用直径为d的周期点(x,y,z)填充一个立方体(lxl),它们是相同的。到目前为止,这就是我所拥有的:

L=10
d=2

x,y,z = 0,0,0
counter=0

with open("question1.xyz","w") as f:
    while x<=L-d:
        while y<=L-d:
            while z<=L-d:
                f.write('H ')
                f.write('%f ' %x )
                f.write('%f ' %y )
                f.write('%f\n' %z )
                counter=counter+1
                z=z+d
            z=0
            y=y+d
        z,y=0,0
        x=x+d

有什么想法或建议吗?提前谢谢

可以做几件事:第一,将数据格式化与数据生成分开,第二,使用。在第一个近似值中,会是这样的:

from itertools import product

def iterate_3d(size, step=1):
    """ Generate the data using the standard lib """
    # an iterable range between 0 and `size` with `step`, not including size
    vals = xrange(0, size, step)  

    return product(vals, repeat=3)  # replaces your nested loops


def save(filename, data):    
    """ Format and save the data, which is a sequence of (x, y, z) tuples """
    with open(filename, "w") as f:
        for x, y, z in data:
            f.write("H %f %f %f\n" % (x, y, z))

def main():
    data = iterate_3d(10, 2)
    save("question1.xyz", data)


if __name__=='__main__':
    main()

可以做几件事:第一,将数据格式化与数据生成分开,第二,使用。在第一个近似值中,会是这样的:

from itertools import product

def iterate_3d(size, step=1):
    """ Generate the data using the standard lib """
    # an iterable range between 0 and `size` with `step`, not including size
    vals = xrange(0, size, step)  

    return product(vals, repeat=3)  # replaces your nested loops


def save(filename, data):    
    """ Format and save the data, which is a sequence of (x, y, z) tuples """
    with open(filename, "w") as f:
        for x, y, z in data:
            f.write("H %f %f %f\n" % (x, y, z))

def main():
    data = iterate_3d(10, 2)
    save("question1.xyz", data)


if __name__=='__main__':
    main()

你可以组合写语句:<代码> f.Wrrad('{{}{} } \n'格式(x,y,z)),也可以考虑为x,y,z元组编写生成器,并从中迭代,你应该遍历你的,这样人们就可以在将来回答你的问题。你可以组合写语句:<代码> f.Wrrad('H{}{}{} n′.格式化(x,y,z))同时,考虑编写一个X、Y、Z元组生成器并从中迭代,你应该遍历你的,所以人们会在未来回答你的问题。HM,在生成文件时有问题,你的意思是:“用标准的LIB生成数据”“我是Python的新手(第一周)”因此,仍然试图了解这只是一个文档,它除了注释意图之外什么也不做。我使用了标准的
product
函数,而不是嵌套循环,就是这样。你有什么问题吗?谢谢你的帮助,代码没有什么特别的错误,但是文件没有生成。抱歉,如果这是一个noob问题,但我学习创建文件的唯一方法是:使用open(“question1.xyz”,“w”)作为文件:我尝试运行您的代码,但它没有创建.xyz文件啊,我已经更新了代码,以便可以从命令行运行脚本
main()
或任何您命名的名称都必须在Python中显式调用。非常感谢您的帮助!我知道你在那里做了什么,这确实有助于提高程序的运行效率快速提问,如果我想限制粒子(x,y,z)点的数量,我将如何实现。数字是526,我应该加上一个while语句吗?嗯,生成文件时遇到问题,你说的“使用标准库生成数据”是什么意思?我对python不熟悉(第一周),所以仍在努力学习这只是一个文档,它除了注释意图之外什么也不做。我使用了标准的
product
函数,而不是嵌套循环,就是这样。你有什么问题吗?谢谢你的帮助,代码没有什么特别的错误,但是文件没有生成。抱歉,如果这是一个noob问题,但我学习创建文件的唯一方法是:使用open(“question1.xyz”,“w”)作为文件:我尝试运行您的代码,但它没有创建.xyz文件啊,我已经更新了代码,以便可以从命令行运行脚本
main()
或任何您命名的名称都必须在Python中显式调用。非常感谢您的帮助!我知道你在那里做了什么,这确实有助于提高程序的运行效率快速提问,如果我想限制粒子(x,y,z)点的数量,我将如何实现。电话号码是526,我应该加上一个while语句吗?