小编max*_*max的帖子

python中多个列表的产品总和

试图模仿Excel的SUMPRODUCT功能:

SUMPRODUCT(v1, v2, ..., vN) =
    v1[0]*v2[0]*...*vN[0] + v1[1]*v2[1]*...*vN[1] + ... + v1[n]*v2[n]*...*vN[n]
Run Code Online (Sandbox Code Playgroud)

其中n是每个向量中元素的数量.

这类似于点积,但对于多个向量.我阅读常规点积的非常详细的讨论,但我不知道如何将它干净地扩展到多个向量.作为参考,我正在复制那里提出的优化代码,我将其(通常)移植到Python 3.BTW,对于dot产品,最后一种方法仍然在P3K中获胜.

def d0(v1,v2):
    """                                                                                                     
    d0 is Nominal approach:                                                                                 
    multiply/add in a loop                                                                                  
    """
    out = 0
    for k in range(len(v1)):
        out += v1[k] * v2[k]
    return out

def d1(v1,v2):
    """                                                                                                     
    d1 uses a map                                                                        
    """
    return sum(map(mul,v1,v2))

def d3(v1,v2):
    """                                                                                                     
    d3 uses a starmap (itertools) to apply the mul operator on an zipped (v1,v2)                           
    """
    return sum(starmap(mul,zip(v1,v2)))
Run Code Online (Sandbox Code Playgroud)

python algorithm python-3.x

9
推荐指数
3
解决办法
2万
查看次数

python&numpy:数组切片的总和

我有一维numpy数组(array_)和一个Python列表(list_).

以下代码有效,但效率低,因为切片涉及不必要的副本(当然对于Python列表,我也相信numpy数组?):

result = sum(array_[1:])
result = sum(list_[1:])
Run Code Online (Sandbox Code Playgroud)

什么是改写它的好方法?

python arrays numpy

9
推荐指数
2
解决办法
3万
查看次数

使用工厂与常规构造函数的利弊

(使用Python 3.2,虽然我怀疑它很重要.)

我有class Data,class Rules和类Result.我使用小写来表示类的实例.

rules对象包含,如果施加到一个规则data对象,可以创建一个result对象.

我决定在哪里放置实际将规则应用于数据的(相当复杂和不断发展的)代码.我可以看到两个选择:

  1. 把那些代码放在一个类Result方法中,比如说parse_rules.Result构造函数将rules对象作为参数,并将其传递给self.parse_rules.

  2. 将该代码放在一个新类中ResultFactory.ResultFactory将是一个单例类,它有一个方法,比如说build_result,它接受rules一个参数并返回一个新构建的result对象.

这两种方法的优点和缺点是什么?

python architecture oop design-patterns class-factory

9
推荐指数
1
解决办法
1533
查看次数

__new__方法返回与第一个arg不同类型的对象的用例是什么?

文档意味着它的确定__new__(cls, ...)返回比不同类型的对象cls.它说在那种情况下__init__()不会被调用.它没有明确说明,但常识或简单的测试确认了对象的结果不会有类型cls.

为什么允许这种看似奇怪的行为?用例是什么?这显然是故意的.

python constructor class object

9
推荐指数
1
解决办法
264
查看次数

在timeit中使用分号

timeit.timeit当我在以字符串形式传递的语句参数中有异常时,我似乎无法工作:

# after the first and third semicolon, I put 4 spaces 
timeit.timeit('try:;    a=1;except:;    pass')
Run Code Online (Sandbox Code Playgroud)

这导致:

Traceback (most recent call last):
  File "a.py", line 48, in <module>
    timeit.timeit('try:;    a=1;except:;    pass')
  File "C:\CPython33\lib\timeit.py", line 230, in timeit
    return Timer(stmt, setup, timer).timeit(number)
  File "C:\CPython33\lib\timeit.py", line 136, in __init__
    code = compile(src, dummy_src_name, "exec")
  File "<timeit-src>", line 6
    try:;    a=1;except:;    pass
        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我用Python 3.3运行它,但即使使用旧的Python(3.2)也会出现同样的错误.

更新:

我正在关注这个文档(强调我的):

class timeit.Timer(stmt ='pass',setup ='pass',timer =)

用于小代码片段的定时执行速度的类.

构造函数接受一个定时语句,一个用于设置的附加语句和一个定时器函数.两个语句都默认为'pass'; 计时器功能与平台有关(请参阅模块文档字符串).stmt和setup也可能包含多个以;分隔的语句; 或换行符,只要它们不包含多行字符串文字.

python exception timeit

9
推荐指数
1
解决办法
3622
查看次数

将字符串拆分为2个字母的段

我有一个字符串,我需要分成2个字母的部分.例如,'ABCDXY'应该成为['AB', 'CD', 'XY'].在奇数个字符的情况下的行为可以完全是任意的(我将提前检查长度).

没有丑陋的循环有没有办法做到这一点?

python string iterator python-3.x

9
推荐指数
2
解决办法
1万
查看次数

装饰模块vs functools.wraps

decorator模块的功能与functools.wraps密切相关.两者之间有什么区别(从Python 3.3/3.4开始)?

我知道一个区别:3+年前,decorator支持帮助,同时wraps也没有(另见).

python decorator python-3.x

9
推荐指数
3
解决办法
1633
查看次数

代表Git仓库的数学结构是什么

我正在学习Git,如果我有一个代表Git repo的数学结构的描述,那将会很棒.例如:它是一个有向无环图; 它的节点代表提交; 它的节点有标签(每个节点最多一个标签,没有标签使用两次)代表分支等(我知道这个描述不正确,我只是想解释我在寻找什么.)

git graph

9
推荐指数
2
解决办法
1275
查看次数

如何获取MyPy的正则表达式模式类型

如果我编译一个正则表达式

>>> type(re.compile(""))
<class '_sre.SRE_Pattern'>
Run Code Online (Sandbox Code Playgroud)

并希望将该正则表达式传递给函数并使用Mypy来键入check

def my_func(compiled_regex: _sre.SRE_Pattern):
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题

>>> import _sre
>>> from _sre import SRE_Pattern
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SRE_Pattern'
Run Code Online (Sandbox Code Playgroud)

您似乎可以导入_sre但由于某种原因SRE_Pattern不可导入.

python mypy

8
推荐指数
2
解决办法
1353
查看次数

拉动图像时设备上没有剩余空间

在Windows 10 Build 14393下使用Docker 1.13.0(9795)时,我试图运行最新的python图像(这将是3.6)时"设备上没有剩余空间":

> docker run -it python
Unable to find image 'python:latest' locally
latest: Pulling from library/python
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
52f3db4b5710: Extracting [==================================================>] 129.8 MB/129.8 MB
45b2a7e03e44: Download complete
75ef15b2048b: Download complete
e41da2f0bac3: Download complete
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: failed to register layer: Error processing tar file(exit status
 1): write /usr/share/doc/libfreetype6/reference/ft2-type1_tables.html: no space left on device.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)

硬盘驱动器上有超过20 GB的可用空间,因此我认为问题出在Docker的虚拟机中.如何访问它以调查磁盘使用情况并在需要时进行清理?

docker imagesdocker ps -a没有发现任何大的东西:

> docker images …
Run Code Online (Sandbox Code Playgroud)

docker

8
推荐指数
4
解决办法
4219
查看次数