我有一些代码包含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]将始终定义).
如果不是这样,我想我就坚持用包裹zip在list().
(PS,我知道这是不必要的优化.我只是好奇就是全部)
更新:
如果有人关心,我t0, t1, t2 = zip(*G)选择了.首先,这可以让我为数据提供有意义的名称.我G实际上由长度为2个元组组成(代表分子和分母).列表理解只比zip更容易阅读,但这种方式要好得多(因为在大多数情况下,zip是列表我在列表理解中迭代,这使事情变得更平坦).
其次,正如@thewolf和@Sven Marnach的优秀答案所指出的,对于较小的列表,这种方式更快.在大多数情况下,我的G实际上并不大(如果它很大,那么这肯定不会是代码的瓶颈!).
但是有更多方法可以做到这一点,比我想象的还要多,包括a, *b, c = G我甚至不知道的Python 3 的新功能.
我有一个偏序集,说A = [x1, x2, ...],这意味着每一个xi和xj集合中的,(恰好)的四种可能性之一为真:xi < xj,xi == xj,xi > xj,或xi与xj所无法比拟的.
我想找到的最大元素(即,这些元素xi是针对那些还没有元素xj用xi < xj).什么是有效的算法(最小化比较次数)?我尝试构建DAG并进行拓扑排序,但只是构建图形需要进行O(n ^ 2)次比较,这太多了.
我在Python中这样做,但如果你不知道它我可以读其他语言,或伪代码.
我主要是一个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程序.有没有比这些更像英语的编程语言?
我发现在Mac OS X终端中,一些Unicode字符会占用多个字符空间.例如27FC(从条向右的长箭头).它打印两个字符宽,但第二个字符打印在下一个字符的顶部,所以你必须这样做?<space>才能正确打印.例如,?a打印像.
(我把字体大小设置得很大,你可以看到它,但它适用于所有字体大小).
顺便说一下,这是Mac OS X 10.6终端应用程序中的Menlo字体.
23B3(SUMMATION TOP)实际打印为两个字符宽和高(至少在Safari中,它也在浏览器中执行此操作,注意它与上面的行重叠)⎲
但是,在Ubuntu的终端中,这些字符中没有一个比一个字符打印更宽或更高.
有没有办法以编程方式判断角色是否占用多个空格?
我正在使用Python,所以在纯Python或POSIX上工作的东西(即,我可以使用os模块调用一些bash命令)将是首选.
此外,我应该注意,如果我将终端的字体设置中的"字符间距"设置增加到1.5(从默认的1.0),那么它看起来像
.
此外,如果答案能够对所有这些有所了解(例如,为什么会发生这种情况,那就太好了)
我有一个方阵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)
我只是迭代并复制所有非零元素,但允许上三角形为零.
OS X动态加载器经常会出现错误
Symbol not found: <some symbol name>
Referenced from: <lib location>
Expected in: flat namespace
Run Code Online (Sandbox Code Playgroud)
如果你搜索错误,你会发现很多错误.我粗略地理解这个问题是一个错误的链接,但没有一个答案解释了"平面命名空间"在这里的意思.
在.travis.yml中,是否可以针对矩阵中的不同构建具有多个安全加密环境变量的值?我想要一个矩阵像
- VAR1="true" SECURE_VAR=[secure 1]
- VAR2="true" SECURE_VAR=[secure 2]
Run Code Online (Sandbox Code Playgroud)
好像你可以使安全变量全局所有构建,将其置于global,或者通过将它们设置为一个构建的唯一变量secure下matrix。但是我什至没有看到混合安全和非安全环境变量来定义构建的方法。这可能吗?
我试过了
env:
matrix:
- VAR1: "true"
secure: "kJUVmbb8L26E4UNTp3n...="
- ...
Run Code Online (Sandbox Code Playgroud)
换句话说,将它们都作为字典中的键,这显然适用于普通环境变量。但这导致特拉维斯出错。
如何获得第一个粗体的代码(等宽字体)文本(我正在使用Sphinx)?任何东西::似乎都是字面上呈现的,就像``,所以``**bold**``不起作用.
在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) 我一直在使用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").对这些中的一个或全部有任何建议吗?
如果我想到它,我可能会在这里添加更多东西.