小编Ray*_*ger的帖子

函数定义在另一个函数定义-slow中?

看看构造我的函数的两种方法:

class myClass:
    def _myFunc(self):
        pass

    def myFunc2(self):
        self._myFunc()

class myClass:
    def myFunc2(self):
        def myFunc():
            pass

        myFunc()
Run Code Online (Sandbox Code Playgroud)

第二种选择会慢吗?我只需要从myFunc2调用myFunc,所以我想将它隐藏在我的模块文档中,我可以使用下划线,但我认为将它放在函数中会更清晰.另一方面,我可能需要每秒调用myFunc2几百次,因此每次调用myFunc2时"重新定义"myFunc可能会很慢......这是一个很好的猜测吗?

python performance closures function decorator

6
推荐指数
2
解决办法
6030
查看次数

合并列表列表

如何合并列表列表?

[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
Run Code Online (Sandbox Code Playgroud)

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
Run Code Online (Sandbox Code Playgroud)

如果我可以在合并列表之前在每个项目的开头和结尾添加一个值,那就更好了,比如html标签.

即,最终结果将是:

['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>', '<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']
Run Code Online (Sandbox Code Playgroud)

python merge list

6
推荐指数
2
解决办法
371
查看次数

CPython使用什么解析器生成器?

我正在阅读文档中的这个页面,并注意到它说

这是完整的Python语法,因为它由解析器生成器读取并用于解析Python源文件

但是,我很难找到CPython使用的解析器生成器.那么CPython使用什么解析器生成器呢?是否有其他解析器生成器可以在该页面上进行语法而不进行任何修改?

python parsing parser-generator asdl

6
推荐指数
1
解决办法
702
查看次数

最少组装或编译至少三个值

我正在查看GCC-4.8为x86_64生成的代码,并想知道是否有更好(更快)的方法来计算三个值的最小值.

下面是Python的摘录收集模块,计算最低的m,rightindex+1leftindex:

    ssize_t m = n;
    if (m > rightindex + 1)
        m = rightindex + 1;
    if (m > leftindex)
        m = leftindex;
Run Code Online (Sandbox Code Playgroud)

GCC使用CMOV生成依赖于序列的依赖代码:

leaq    1(%rbp), %rdx
cmpq    %rsi, %rdx
cmovg   %rsi, %rdx
cmpq    %rbx, %rdx
cmovg   %rbx, %rdx
Run Code Online (Sandbox Code Playgroud)

是否有更快的代码可以通过删除数据依赖性来利用处理器无序并行执行?我想知道是否存在用于计算多个值的最小值而不使用条件或谓词指令的已知技巧.我也想知道是否有一些饱和的算术内在函数可以帮助解决这种情况.

EDITS:

c optimization assembly x86-64 intrinsics

6
推荐指数
2
解决办法
1256
查看次数

以不同顺序迭代itertools.product而不创建列表

我有一个覆盖巨大搜索空间的迭代.我的计划不是让脚本终止,而是在一段时间之后杀死脚本.

现在我需要这个空间的笛卡尔积并在那里搜索.itertools.product产生这个订单:

>>> list(itertools.product(range(3), repeat=2))
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Run Code Online (Sandbox Code Playgroud)

虽然我想按照类似于以下的对角线顺序进行搜索:

[(0, 0), (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), (1, 2), (2, 1), (2, 2)]
Run Code Online (Sandbox Code Playgroud)

sorted使用一些返回元组元素总和的关键函数将是我的常规方法,但是对于排序所有数据都需要检查,这在我的情况下是不可行的.有没有办法做到这一点?

这个问题很相似,这一个,但sorted仍然是在回答中.此外,我不很快看到如何适应ordered_combinationsordered_product.

python algorithm dynamic-programming combinatorics python-itertools

6
推荐指数
1
解决办法
445
查看次数

在Python中按其元素的总和对组合进行排序

我有一个巨大的Python整数列表(1000000+元素),但为了简单起见,我将用一个例子来说明我需要的东西.我们假设我有这个清单:

A = [1,2,3,4,100]
Run Code Online (Sandbox Code Playgroud)

现在我想得到该列表的所有组合(大小3),所以我使用itertools.

combinations = itertools.combinations(A,3)
Run Code Online (Sandbox Code Playgroud)

但我的问题是,这将按字典顺序返回组合:

(1,2,3)
(1,2,4)
(1,2,100)
(1,3,4)
Run Code Online (Sandbox Code Playgroud)

等等.

我想得到按其元素总和排序的组合.那将是:

(1,2,3)总和6,(1,2,4)和7,(1,3,4)和8,

等等.

我怎样才能做到这一点?

python sorting combinations python-itertools

6
推荐指数
1
解决办法
441
查看次数

当对象来自SQLAlchemy时,无法pickle int对象错误?

我正在使用YAML和SQLAlchemy.我定义了我的对象,我能够使用YAML来打印就好了.但是,当我尝试在SQLAlchemy查询返回的对象上使用YAML时,它会因错误而失败can't pickle int objects.我打印出从SQLAlchemy返回的实例,它显示的是正确的类型.我会让代码说话:

class HashPointer(Base):
    __tablename__ = 'hash_pointers'

    id = Column(Integer, primary_key=True)
    hash_code = Column(VARBINARY(64), unique=True)
    file_pointer = Column(Text)

    def __init__(self, hash_code, file_pointer):
        self.hash_code = hash_code
        self.file_pointer = file_pointer

    def __repr__(self):
        return "<HashPointer('%s', '%s')>" % (self.hash_code, self.file_pointer)

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Engine = create_engine("mysql://user:pass@localhost/db", echo=True)
Session = sessionmaker(bind=Engine)
session = Session()
fhash = HashPointer(0x661623708235, "c:\\test\\001.txt")

# PRINTS FINE
print(yaml.dump(fhash))

for instance in session.query(HashPointer).all():
    # PRINTS FINE AS __repr__
    print instance

    # THROWS ERROR, …
Run Code Online (Sandbox Code Playgroud)

python yaml sqlalchemy pickle

5
推荐指数
1
解决办法
2975
查看次数

比较Python中的根查找(函数)算法

我想比较在python中找到函数根的不同方法(如牛顿方法或其他简单的基于calc的方法).我不认为编写算法会有太多麻烦.什么是进行实际比较的好方法?我读了一下Big-O.这会是要走的路吗?

(任何项目的想法或曲折也将不胜感激)

谢谢.

python algorithm math performance numerical-methods

5
推荐指数
2
解决办法
2092
查看次数

最大矩形算法实现

我正在尝试用Python 实现Dr. Dobbs的最大矩形算法(清单4).它主要起作用,但是一个特定情况会给出错误的结果,我无法弄清楚原因.

这是我的源代码:

from collections import namedtuple

Point = namedtuple('Point', ('X', 'Y'))

#Y      0  1  2      X
arr = [[0, 0, 0, ], #0
       [1, 0, 0, ], #1
       [0, 0, 1, ], #2
       ]

def area(ll, ur):
    if (ll.X < 0) or (ll.Y < 0) or (ur.X < 0) or (ur.Y < 0):
        return 0.
    return ((ur.X - ll.X) + 1) * ((ur.Y - ll.Y) + 1)

def update_cache(a, c, x):
    M = len(a[0])
    N = …
Run Code Online (Sandbox Code Playgroud)

python algorithm

5
推荐指数
1
解决办法
2846
查看次数

具有递增整数数组的高效算法

我一直在自学自己的数据结构在python中,不知道我是否过度思考(或解密!)以下问题:

  • 我的目标是提出一种有效的算法

  • 使用该算法,我的目标是确定是否存在整数,使得A [i] = i在增加的整数数组中

  • 然后我想找到大O符号的运行时间作为n的长度的函数?

所以这不会只是O(log n)的略微修改版本,其功能相当于:f(i)= A [i] - i.我读这个问题错了吗?任何帮助将不胜感激!

arrays algorithm search bisection

5
推荐指数
1
解决办法
167
查看次数