小编asm*_*rer的帖子

从Python中的元组列表中获取每个元组的第n个元素的最佳方法

我有一些代码包含zip(*G)[0](和其他地方,zip(*G)[1]有不同的G). G是一个元组列表.这样做是返回G中每个元组zip(*G)[n]n-1第一个(或通常是for ,th)元素的列表作为元组.例如,

>>> G = [(1, 2, 3), ('a', 'b', 'c'), ('you', 'and', 'me')]
>>> zip(*G)[0]
(1, 'a', 'you')
>>> zip(*G)[1]
(2, 'b', 'and')
Run Code Online (Sandbox Code Playgroud)

这非常聪明,但问题是它在Python 3中不起作用,因为它zip是一个迭代器.此外,2to3还不够聪明,无法修复它.所以显而易见的解决方案是使用list(zip(*G))[0],但这让我思考:可能有一种更有效的方法来实现这一点.无需创建zip创建的所有元组.我只需要nG中每个元组的th元素.

是否有更高效,但同样紧凑的方式来做到这一点?我对标准库中的任何东西都很满意.在我的用例中,G中的每个元组至少是长度n,因此无需担心zip停在最小长度元组的情况(即,zip(*G)[n]将始终定义).

如果不是这样,我想我就坚持用包裹ziplist().

(PS,我知道这是不必要的优化.我只是好奇就是全部)

更新:

如果有人关心,我t0, t1, t2 = zip(*G)选择了.首先,这可以让我为数据提供有意义的名称.我G实际上由长度为2个元组组成(代表分子和分母).列表理解只比zip更容易阅读,但这种方式要好得多(因为在大多数情况下,zip是列表我在列表理解中迭代,这使事情变得更平坦).

其次,正如@thewolf和@Sven Marnach的优秀答案所指出的,对于较小的列表,这种方式更快.在大多数情况下,我的G实际上并不大(如果它很大,那么这肯定不会是代码的瓶颈!).

但是有更多方法可以做到这一点,比我想象的还要多,包括a, *b, c = G我甚至不知道的Python 3 的新功能.

python

11
推荐指数
3
解决办法
7450
查看次数

查找部分有序集的最大元素的高效算法

我有一个偏序集,说A = [x1, x2, ...],这意味着每一个xixj集合中的,(恰好)的四种可能性之一为真:xi < xj,xi == xj,xi > xj,或xixj所无法比拟的.

我想找到的最大元素(即,这些元素xi是针对那些还没有元素xjxi < xj).什么是有效的算法(最小化比较次数)?我尝试构建DAG并进行拓扑排序,但只是构建图形需要进行O(n ^ 2)次比较,这太多了.

我在Python中这样做,但如果你不知道它我可以读其他语言,或伪代码.

algorithm poset

11
推荐指数
1
解决办法
1583
查看次数

什么编程语言最像英语?

我主要是一个Python程序员,它经常被描述为"可执行的伪代码".我使用了一点AppleScript,它似乎是我见过的最类似英语的编程语言,因为几乎所有运算符都可以是单词,它可以让你在任何地方使用"the"(例如,这个愚蠢的例子我只是想出了:

set the firstnumber to 1
set the secondnumber to 2
if the firstnumber is equal to the secondnumber then 
    set the sum to 5
end if
Run Code Online (Sandbox Code Playgroud)

是一个有效的AppleScript程序.有没有比这些更像英语的编程语言?

applescript nlp programming-languages

10
推荐指数
5
解决办法
9794
查看次数

以编程方式判断Unicode字符是否占用终端中的多个字符空间

我发现在Mac OS X终端中,一些Unicode字符会占用多个字符空间.例如27FC(从条向右的长箭头).它打印两个字符宽,但第二个字符打印在下一个字符的顶部,所以你必须这样做?<space>才能正确打印.例如,?a打印像. 箭头+ a (我把字体大小设置得很大,你可以看到它,但它适用于所有字体大小).

顺便说一下,这是Mac OS X 10.6终端应用程序中的Menlo字体.

23B3(SUMMATION TOP)实际打印为两个字符宽高(至少在Safari中,它也在浏览器中执行此操作,注意它与上面的行重叠)⎲

但是,在Ubuntu的终端中,这些字符中没有一个比一个字符打印更宽或更高.

有没有办法以编程方式判断角色是否占用多个空格?

我正在使用Python,所以在纯Python或POSIX上工作的东西(即,我可以使用os模块调用一些bash命令)将是首选.

此外,我应该注意,如果我将终端的字体设置中的"字符间距"设置增加到1.5(从默认的1.0),那么它看起来像 箭头+间隔.

此外,如果答案能够对所有这些有所了解(例如,为什么会发生这种情况,那就太好了)

python unicode terminal

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

如何从numpy.triu()只将上三角值复制到数组中?

我有一个方阵A(可以是任何大小),我想取上三角形部分并将这些值放在一个数组中,而不是中心对角线以下的值(k = 0).

A = array([[ 4,  0,  3],
           [ 2,  4, -2],
           [-2, -3,  7]])
Run Code Online (Sandbox Code Playgroud)

使用numpy.triu(A)让我

A = array([[ 4,  0,  3],
           [ 0,  4, -2],
           [ 0,  0,  7]])
Run Code Online (Sandbox Code Playgroud)

但是从这里我怎么只将上三角形元素复制成一个简单的数组呢?如:

[4, 0, 3, 4, -2, 7]
Run Code Online (Sandbox Code Playgroud)

我只是迭代并复制所有非零元素,但允许上三角形为零.

python numpy

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

"预期在:平面命名空间"是什么意思?

OS X动态加载器经常会出现错误

Symbol not found: <some symbol name>
Referenced from: <lib location>
Expected in: flat namespace
Run Code Online (Sandbox Code Playgroud)

如果你搜索错误,你会发现很多错误.我粗略地理解这个问题是一个错误的链接,但没有一个答案解释了"平面命名空间"在这里的意思.

macos dynamic-linking dyld

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

.travis.yml中的安全加密环境变量的多个值

在.travis.yml中,是否可以针对矩阵中的不同构建具有多个安全加密环境变量的值?我想要一个矩阵像

- VAR1="true" SECURE_VAR=[secure 1]
- VAR2="true" SECURE_VAR=[secure 2]
Run Code Online (Sandbox Code Playgroud)

好像你可以使安全变量全局所有构建,将其置于global,或者通过将它们设置为一个构建的唯一变量securematrix。但是我什至没有看到混合安全和非安全环境变量来定义构建的方法。这可能吗?

我试过了

env:
  matrix:
    - VAR1: "true"
      secure: "kJUVmbb8L26E4UNTp3n...="
    - ...
Run Code Online (Sandbox Code Playgroud)

换句话说,将它们都作为字典中的键,这显然适用于普通环境变量。但这导致特拉维斯出错。

encryption environment-variables travis-ci

8
推荐指数
0
解决办法
308
查看次数

第一个大胆的代码

如何获得第一个粗体的代码(等宽字体)文本(我正在使用Sphinx)?任何东西::似乎都是字面上呈现的,就像``,所以``**bold**``不起作用.

restructuredtext python-sphinx

7
推荐指数
1
解决办法
2556
查看次数

Julia的convert()何时使用?

http://julia.readthedocs.org/en/latest/manual/conversion-and-promotion/上,有一个关于向浮点数等添加整数的讨论,最后它说

用户定义的类型可以通过定义与其他类型进行转换的方法,以及提供一些促销规则来定义与其他类型混合时应该提升的类型,从而轻松参与此促销系统.

从这里我推断,在定义我自己的数字类型时,我只需要定义如何将其转换为已知类型,以便它可以使用它上面的函数.但我尝试了这个似乎不起作用:

julia> type MyType
           n::Int
       end

julia> convert(::Type{Int}, x::MyType) = x.n
convert (generic function with 1 method)

julia> convert(Int, MyType(1))
1

julia> MyType(1) + 1
ERROR: `+` has no method matching +(::MyType, ::Int64)
Run Code Online (Sandbox Code Playgroud)

julia

7
推荐指数
1
解决办法
2909
查看次数

用于Python的emacs中更高级的语法着色

我一直在使用emacs 24(从git版本构建).我已经开始创建自定义主题,但我注意到主题功能相当有限,特别是对于Python.

我希望能够为像这样的东西分配不同的颜色

  • '单引号字符串'与"双引号字符串"
  • 突出显示doctests.所以,如果我有类似的东西

    def myfunc(x):
        """
        This is the docstring.
    
        >>> # These are the examples
        >>> print myfunc(x)
        1
        """
        return 1
    
    Run Code Online (Sandbox Code Playgroud)

    我想要This is the docstring像字符串一样着色,但我希望它print myfunc()像Python代码一样着色(或至少不同).例如,在vim中,使用我安装的任何插件,doctests颜色为棕色,但字符串为蓝色.

  • 与常规字符串不同地突出显示文档字符串.

  • 字符串格式化字符的着色(如"%s""%(newstyle_formatting)s").
  • 更好地处理'或'之前的r,u或b.

对这些中的一个或全部有任何建议吗?

如果我想到它,我可能会在这里添加更多东西.

python emacs syntax-highlighting

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