小编Alv*_*tes的帖子

嵌套列表理解如何工作的解释?

我理解这一点没有问题:

a = [1,2,3,4]
b = [x for x in a]
Run Code Online (Sandbox Code Playgroud)

我以为就是这样,但后来我找到了这个片段:

a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]
Run Code Online (Sandbox Code Playgroud)

这使得b = [1,2,3,4,5,6].问题是我在理解语法方面遇到了麻烦[x for xs in a for x in xs],有人能解释一下它是如何工作的吗?

python list

55
推荐指数
7
解决办法
2万
查看次数

饼图中的matplotlib百分比标签位置

有没有办法在matplot lib饼图中更改百分比标签的默认位置?

这是一个示例饼图:

我的饼图

我用它创建的:

plt.pie(sizes, labels=labels, colors=colors, explode=explode, autopct='%1.0f%%')
Run Code Online (Sandbox Code Playgroud)

现在我不喜欢一些百分比标签如何侵入其他部分teritory(实际上这个例子中唯一的perpitrator是9m部分).理想情况下,我希望这些标签位于饼图之外,某些箭头指向该部分,或者可选地在该部分之外.

python matplotlib

23
推荐指数
1
解决办法
3万
查看次数

实例方法还是功能?

今天我定义了一个专门用于测试下一步的课程:

class B(object):
    def p(self):
        print("p")
Run Code Online (Sandbox Code Playgroud)

后来我这样做了:

>>> type(B.__dict__['p'])
<type 'function'>
>>> type(B.p)
<type 'instancemethod'>
Run Code Online (Sandbox Code Playgroud)

所以为什么?是不是B.pB.__dict__['p']同一个对象?

当我尝试这个时,我的惊讶刚刚增加:

>>> B.__dict__['p']
<function p at 0x3d2bc80>
>>> type(B.__dict__['p'])
<type 'function'>
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止一直很好,两种结果都是类型function,但是当我尝试时:

>>> B.p
<unbound method B.p>
>>> type(B.p)
<type 'instancemethod'>
Run Code Online (Sandbox Code Playgroud)

什么为什么?unbound methodinstancemethod?那些是一样的吗?为什么两个不同的名字

嗯,似乎python充满了惊喜!

这是我正在使用的python:

Python 2.7.4 (default, Sep 26 2013, 03:20:26) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)

python python-2.7

20
推荐指数
1
解决办法
8507
查看次数

大熊猫绘制时间序列图,在选定日期显示垂直线

考虑这个时间序列,维基百科类别中的累计编辑数.

In [555]:
cum_edits.head()
Out[555]:
2001-08-31 23:37:28    1
2001-09-01 05:09:28    2
2001-09-18 10:01:17    3
2001-10-27 06:52:45    4
2001-10-27 07:01:45    5
Name: edits, dtype: int64
In [565]:
cum_edits.tail()
Out[565]:
2014-01-29 16:05:15    53254
2014-01-29 16:07:09    53255
2014-01-29 16:11:43    53256
2014-01-29 18:09:44    53257
2014-01-29 18:12:09    53258
Name: edits, dtype: int64
Run Code Online (Sandbox Code Playgroud)

我要像这样绘制图形:

In [567]:

cum_edits.plot()

Out[567]:

<matplotlib.axes.AxesSubplot at 0x1359c810>
Run Code Online (Sandbox Code Playgroud)

累积编辑

我希望在每次total_edits/n ; e.g. n=10编辑后也绘制垂直线.我很容易计算出来.

In [568]:

dates

Out[568]:

[Timestamp('2006-06-04 04:46:22', tz=None),
 Timestamp('2007-01-28 23:53:02', tz=None),
 Timestamp('2007-09-16 10:52:02', tz=None),
 Timestamp('2008-04-28 21:20:40', tz=None),
 Timestamp('2009-04-12 22:07:13', tz=None), …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

什么是在Haskell中使用的Representable?

我想了解Representable在Haskell 中代表什么.定义

Haskell类型的可表示的endofunctors与读者monad同构,因此可以免费继承大量的属性.

对我来说不够清楚.我想看看一个真实的例子,了解我如何使用tabulateindex方法.

所以,我的问题是:

  • 什么是Representable用于?
  • 你能澄清一下这个定义并提供一个例子吗?

haskell functor category-theory

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

如何使用 LaTeX 括号在 Matplotlib 中标记轴?

如何使用 LaTeX 表达式在 Matplotlib 中标记轴$\langle B_{\mathrm{e}} \rangle$?我需要用漂亮的“<”和“>”LaTeX括号标记我的轴。

python latex matplotlib

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

如何将网格转换为VTK格式?

我有自己格式的网格,我想将它导出到.vtk文件.我该怎么做呢?

原始网格采用以下格式:(伪代码)

class Mesh {

   List<Float[3]> _coordinates

   List<int[4]> _tetra //(elements, Faces, etc.)

}
Run Code Online (Sandbox Code Playgroud)

我希望这能澄清我的问题.我只想用Paraview加载它,所以我不在乎它是否是结构化的,聚合等.

mesh vtk

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

PyQt 类继承

我在理解 Python/PyQt 的类继承时遇到了麻烦。我有一个MainWindow和一个 Popup QWidget。我想用互动self.label1MainWindowQWidget在弹出窗口中打开,但我不知道该怎么做。我只知道MainWindow反过来,从里面的弹出窗口访问所有小部件,反之亦然。

下面是一个例子,self.label1MainWindow后应该得到另一个文本MyPopup在新窗口中打开:

import sys
from PyQt4.Qt import *

class MyPopup(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        # I want to change the lable1 of MainWindow
        self.cw.label1.setText('hello')


class MainWindow(QMainWindow):
    def __init__(self, *args):
        QMainWindow.__init__(self, *args)
        self.cw = QWidget(self)
        self.setCentralWidget(self.cw)
        self.btn1 = QPushButton("Click me", self.cw)
        self.btn1.setGeometry(QRect(50, 50, 100, 30))
        self.label1 = QLabel("No Commands running", self.cw)
        self.connect(self.btn1, SIGNAL("clicked()"), self.doit)
        self.w = None

    def doit(self):
        self.w = …
Run Code Online (Sandbox Code Playgroud)

python inheritance class pyqt

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

有没有办法使用Python"with"语句,如"使用"C#

我正在阅读这个问题而且在我看来我也需要它,但在Python中.所以我想知道是否有一种方法可以用withPython中的语句来做到这一点.

基本上我想要的是Python中的某种IDisposable(C#)类比.我知道,肯定会有点不同,我认为如下:

class ForUseInWith(IDisposableLike):
    #something here
    pass
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

with ForUseInWith() as disposable:
    #something here
    pass
Run Code Online (Sandbox Code Playgroud)

目前我正在研究如何研究python参考PEP 343,如果我设法做了一个很好的解决方案和一个聪明的例子,我将在这里发布答案.但顺便说一句,也许你可以帮助我.

python

3
推荐指数
1
解决办法
146
查看次数

绘制PyQt小部件背景时出现意外消息

为什么我在QPainter::begin: Painter already active运行此代码时在控制台中收到此消息:

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys


class MyRoundWidget(QWidget):

    def __init__(self, master=None):
        super(MyRoundWidget,self).__init__(master)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setWindowTitle("QLinearGradient Vertical Gradient ")
        self.setAttribute(Qt.WA_TranslucentBackground)        

    def paintEvent(self, ev):
        painter = QPainter(self)
        painter.begin(self)
        gradient = QLinearGradient(QRectF(self.rect()).topLeft(),QRectF(self.rect()).bottomLeft())
        gradient.setColorAt(0.0, Qt.black)
        gradient.setColorAt(0.4, Qt.gray)
        gradient.setColorAt(0.7, Qt.black)
        painter.setBrush(gradient)
        painter.drawRoundedRect(self.rect(), 10.0, 10.0)
        painter.end()


def main():    
    app     = QApplication(sys.argv)
    widget = MyRoundWidget()    
    widget.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?

python pyqt

3
推荐指数
1
解决办法
1250
查看次数