小编got*_*nes的帖子

在Python类中支持等价("相等")的优雅方法

在编写自定义类时,通过==!=运算符允许等效通常很重要.在Python中,这可以通过分别实现__eq____ne__特殊方法来实现.我发现这样做的最简单方法是以下方法:

class Foo:
    def __init__(self, item):
        self.item = item

    def __eq__(self, other):
        if isinstance(other, self.__class__):
            return self.__dict__ == other.__dict__
        else:
            return False

    def __ne__(self, other):
        return not self.__eq__(other)
Run Code Online (Sandbox Code Playgroud)

你知道更优雅的做法吗?您是否知道使用上述比较方法的任何特殊缺点__dict__

注意:有点澄清 - 何时__eq____ne__未定义,您会发现此行为:

>>> a = Foo(1)
>>> b = Foo(1)
>>> a is b
False
>>> a == b
False
Run Code Online (Sandbox Code Playgroud)

也就是说,a == b评估是False因为它真的运行a is b,是对身份的测试(即" a与...相同的对象b"). …

python equality equivalence

384
推荐指数
6
解决办法
18万
查看次数

在NumPy数组中查找等于零的元素索引

NumPy具有有效的函数/方法nonzero()来识别ndarray对象中非零元素的索引.什么是最有效的方式来获得该元素的索引具有零值?

python numpy

124
推荐指数
6
解决办法
20万
查看次数

Python中的字符串连接与字符串替换

在Python中,使用字符串连接和字符串替换的位置和时间都不包括在内.由于字符串连接在性能上有很大的提升,这是一种风格决定而不是实际的决定吗?

举个具体的例子,如何处理灵活URI的构造:

DOMAIN = 'http://stackoverflow.com'
QUESTIONS = '/questions'

def so_question_uri_sub(q_num):
    return "%s%s/%d" % (DOMAIN, QUESTIONS, q_num)

def so_question_uri_cat(q_num):
    return DOMAIN + QUESTIONS + '/' + str(q_num)
Run Code Online (Sandbox Code Playgroud)

编辑:还有关于加入字符串列表和使用命名替换的建议.这些是中心主题的变体,哪种方式是正确的方式来做到这一点?谢谢你的回复!

python string string-concatenation

98
推荐指数
6
解决办法
8万
查看次数

如何判断Vim会话当前使用哪种colorscheme

您可以通过发出来设置 Vim颜色方案

:colorscheme SCHEME_NAME
Run Code Online (Sandbox Code Playgroud)

但是,奇怪的是,你无法通过发布获得当前使用的方案

:colorscheme
Run Code Online (Sandbox Code Playgroud)

因为这导致" E471: Argument required".我也没有看到输出中列出的配色方案:set.

那么你如何计算当前使用的颜色方案(除了手动切换主题直到你认出它)?

vim configuration syntax-highlighting

98
推荐指数
3
解决办法
4万
查看次数

将--user与--prefix错误与setup.py install结合使用

我试图安装Python包,这是我最近获得的一个系统.我试图利用Python相对较新的每用户site-packages目录和新选项--user.(该选项目前没有记录,但它适用于Python 2.6+;您可以通过运行来查看帮助python setup.py install --help.)

当我试着跑步时

python setup.py install --user
Run Code Online (Sandbox Code Playgroud)

在我下载的任何软件包上,我总是遇到以下错误:

error: can't combine user with with prefix/exec_prefix/home or install_(plat)base
Run Code Online (Sandbox Code Playgroud)

错误是因为非常令人困惑,因为你可以看到,我不提供--prefix,--exec-prefix,--install-base,或--install-platbase标志作为命令行选项.我浪费了很多时间试图找出问题所在.我在下面记录了我的答案,希望能让其他一些可怜的灵魂在几个小时的牦牛皮上刮胡子.

python installation distutils

95
推荐指数
3
解决办法
4万
查看次数

使用Python多处理解决令人难以置信的并行问题

如何使用多处理来解决令人尴尬的并行问题

令人尴尬的并行问题通常包括三个基本部分:

  1. 读取输入数据(来自文件,数据库,tcp连接等).
  2. 对输入数据运行计算,其中每个计算独立于任何其他计算.
  3. 写入计算结果(到文件,数据库,tcp连接等).

我们可以在两个方面并行化程序:

  • 第2部分可以在多个核上运行,因为每个计算都是独立的; 处理顺序无关紧要.
  • 每个部分都可以独立运行.第1部分可以将数据放在输入队列中,第2部分可以从输入队列中提取数据并将结果放到输出队列中,第3部分可以将结果从输出队列中拉出并写出来.

这似乎是并发编程中最基本的模式,但我仍然试图解决它,所以让我们写一个规范的例子来说明如何使用多处理来完成.

下面是示例问题:给定一个包含整数行作为输入的CSV文件,计算它们的总和.将问题分成三个部分,这些部分可以并行运行:

  1. 将输入文件处理为原始数据(整数的列表/可迭代)
  2. 并行计算数据的总和
  3. 输出总和

下面是传统的单进程绑定Python程序,它解决了以下三个任务:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# basicsums.py
"""A program that reads integer values from a CSV file and writes out their
sums to another CSV file.
"""

import csv
import optparse
import sys

def make_cli_parser():
    """Make the command line interface parser."""
    usage = "\n\n".join(["python %prog INPUT_CSV OUTPUT_CSV",
            __doc__,
            """ …
Run Code Online (Sandbox Code Playgroud)

python concurrency multiprocessing embarrassingly-parallel

80
推荐指数
4
解决办法
2万
查看次数

在reStructuredText中的链接中设置文本格式

如何在reStructuredText中的表示链接中格式化文本?

具体来说,我希望从我的第一个生成以下HTML:

<a href="http://docs.python.org/library/optparse.html"><tt>optparse.OptionParser</tt> documentation documentation</a>
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

optparse.OptionParser 文件

其中"optparse.OptionParser"部分是固定宽度字体.

我试过了

```optparse.OptionParser`` <http://docs.python.org/library/optparse.html>`_
Run Code Online (Sandbox Code Playgroud)

然而,这给了

<tt class="docutils literal">`optparse.OptionParser</tt> documentation &lt;<a class="reference external" href="http://docs.python.org/library/optparse.html">http://docs.python.org/library/optparse.html</a>&gt;`_
Run Code Online (Sandbox Code Playgroud)

看起来像这样

``optparse.OptionParser documentation <http://docs.python.org/library/optparse.html>\_

restructuredtext python-sphinx

68
推荐指数
3
解决办法
6550
查看次数

在Vim正常模式下快速切换缓冲区

最近我发现我在Vim中"错误地使用了标签".我一直试图在Vim中使用缓冲区,因为通过MiniBufExplorer辅助,但我发现它很痛苦,因为从正常模式更改缓冲区需要多少次击键.使用选项卡,我可以在正常模式下执行gtgT在选项卡之间来回跳转,我也NUMBERgt可以转到特定选项卡.

使用缓冲区,我要么必须使用:bn,:bp或者使用MiniBufExplorer 进入命令模式,使用Ctrl + kCtrl + Up跳到缓冲区窗口,使用h和向左或向右滚动l然后点击Enter以选择我想要的缓冲区.或者我可以做一些涉及领导序列的事情,但它总是需要从主行中移除多个手指.那是一个真正的痛苦.

如何在正常模式下获得等效的切换标签,以便在正常模式下切换缓冲区,这样我可以做gn/ gpfor :bn/ :bpNUMBERgnfor :buf NUMBER

vim

55
推荐指数
9
解决办法
5万
查看次数

如何让MySQL使用INDEX进行查看查询?

我正在使用Java EE上的MySql数据库进行Web项目.我们需要一个视图来总结来自3个表格的数据,总体上超过3M行.每个表都是使用索引创建的.但是我没有找到一种方法来利用我们用[group by]创建的视图中的条件选择语句检索中的索引.

我得到了人们的建议,即在MySql使用视图并不是一个好主意.因为你不能像在oracle中那样为mysql中的视图创建索引.但是在我进行的一些测试中,索引可以在view select语句中使用.也许我以错误的方式创建了这些观点.

我将用一个例子来描述我的问题.

我们有一张桌子记录了NBA比赛中的高分数据,其中的索引在[eventsnd_in]栏目中

CREATE  TABLE `highscores` (
   `tbl_id` int(11) NOT NULL auto_increment,
   `happened_in` int(4) default NULL,
   `player` int(3) default NULL,
   `score` int(3) default NULL,
   PRIMARY KEY  (`tbl_id`),
   KEY `index_happened_in` (`happened_in`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

插入数据(8行)

INSERT INTO highscores(happened_in, player, score)
VALUES (2006, 24, 61),(2006, 24, 44),(2006, 24, 81),
(1998, 23, 51),(1997, 23, 46),(2006, 3, 55),(2007, 24, 34), (2008, 24, 37);
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个视图,看看科比每年得到的最高分

CREATE OR REPLACE VIEW v_kobe_highScores
AS
   SELECT player, max(score) AS highest_score, …
Run Code Online (Sandbox Code Playgroud)

mysql indexing

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

50
推荐指数
4
解决办法
5万
查看次数