小编Jim*_*ard的帖子

具有最小值,最大值,平均值和标准差的箱形图

我需要创建一个包含某些运行结果的箱形图 - 对于每个运行,我都有最小输出,最大输出,平均输出和标准偏差.这意味着我将需要16个带有标签的箱形图.

到目前为止我遇到的例子描绘了一个数字分布,但在我的情况下,这是不可行的.

在Python(Matplotlib)/ R中有没有办法做到这一点?

python r matplotlib

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

为什么List [str]不是Sequence [str]的子类

List是以下的子类Sequence:

>>> from typing import List, Sequence
>>> issubclass(List, Sequence)
True
Run Code Online (Sandbox Code Playgroud)

List[str]不是以下的子类Sequence[str]:

>>> issubclass(List[str], Sequence[str])
False
Run Code Online (Sandbox Code Playgroud)

为什么?

python type-hinting python-3.x

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

pythonically地从文件中读取时一次构建2个列表

我正在阅读一个包含数十万个代表图表边缘的数字对的大文件.我想建立2个列表:一个带有前沿,另一个带有反向.

目前我正在做一个显式for循环,因为我需要对我读过的行进行一些预处理.但是,我想知道是否有更多的pythonic方法来构建这些列表,如列表推导等.

但是,由于我有两个列表,我没有看到一种方法来使用理解来填充它们而不读取文件两次.

我的代码现在是:

with open('SCC.txt') as data:
    for line in data:
        line = line.rstrip()
        if line:
            edge_list.append((int(line.rstrip().split()[0]), int(line.rstrip().split()[1])))
            reversed_edge_list.append((int(line.rstrip().split()[1]), int(line.rstrip().split()[0])))
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

11
推荐指数
2
解决办法
616
查看次数

表达式可以在布尔文字上简化

我有以下代码重现PyCharm警告,

表达式可以简化

此表达式检测与布尔文字的相等性比较.

seq_group = []
if seq_group == []: # warning here
   print("it is empty.")
Run Code Online (Sandbox Code Playgroud)

如果我将代码更改为,

if seq_group is None:
Run Code Online (Sandbox Code Playgroud)

将修复警告,但真正的问题是None[]emplty列出相同的事情?

干杯

python boolean list pycharm python-3.x

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

read()的文件大小限制?

我在尝试使用Python 3.5加载大文件时遇到了问题.read()没有参数的使用有时会给出一个OSError: Invalid argument.然后我尝试只阅读部分文件,它似乎工作正常.我已经确定它在某处开始失败2.2GB,下面是示例代码:

>>> sys.version
'3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>> x = open('/Users/username/Desktop/large.txt', 'r').read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
>>> x = open('/Users/username/Desktop/large.txt', 'r').read(int(2.1*10**9))
>>> x = open('/Users/username/Desktop/large.txt', 'r').read(int(2.2*10**9))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)

我也注意到在Python 2.7中不会发生这种情况.这是在Python 2.7中运行的相同代码:

>>> sys.version
'2.7.10 (default, …
Run Code Online (Sandbox Code Playgroud)

python macos file python-2.7 python-3.x

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

字符串连接上的Python 3.6 vs 3.5 TypeError消息

'Hello ' + 1 在Python 3.5和3.6上没有返回相同的错误消息:

  • Python 3.5.2: TypeError: Can't convert 'int' object to str implicitly
  • Python 3.6.0: TypeError: must be str, not int

这是一个简单的措辞改变还是有更微妙的背后?

python string typeerror python-3.5 python-3.6

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

基于生成器的协同程序看似无限递归

以下内容摘自David Beazley关于发电机的幻灯片(这里有感兴趣的人).

Task定义了一个类,它包含一个生成期货的生成器,Task类,完整(没有错误处理),如下:

class Task:
    def __init__(self, gen):
        self._gen = gen

    def step(self, value=None):
        try:
            fut = self._gen.send(value)
            fut.add_done_callback(self._wakeup)
        except StopIteration as exc:
            pass

    def _wakeup(self, fut):
        result = fut.result()
        self.step(result)
Run Code Online (Sandbox Code Playgroud)

在一个示例中,还定义了以下递归函数:

from concurrent.futures import ThreadPoolExecutor
import time

pool = ThreadPoolExecutor(max_workers=8)

def recursive(n):
   yield pool.submit(time.sleep, 0.001)
   print("Tick :", n)
   Task(recursive(n+1)).step()
Run Code Online (Sandbox Code Playgroud)

以下两个案例:

  1. 从Python REPL中,如果我们定义它们(或者如果我们将它们放在一个文件中则导入它们),然后使用以下命令跳转启动递归:

    Task(recursive(0)).step()
    
    Run Code Online (Sandbox Code Playgroud)

    它开始打印,似乎已超过递归限制.它显然不会超过它,打印堆栈级别表明它在整个执行过程中保持不变.还有其他事情我不太明白.

    注意:如果你这样执行它,你需要杀死python进程.

  2. 如果我们将所有内容(Task,recursive)放在一个文件中:

    if __name__ == "__main__":
        Task(recursive(0)).step()
    
    Run Code Online (Sandbox Code Playgroud)

    然后运行它python myfile.py,它停止滴答7( …

python recursion generator coroutine python-3.x

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

`typing.NamedTuple` 子类中的 `super` 在 python 3.8 中失败

我的代码在 Python 3.6 中运行,但在 Python 3.8 中失败。似乎归结为调用super的子类typing.NamedTuple,如下所示:

<ipython-input-2-fea20b0178f3> in <module>
----> 1 class Test(typing.NamedTuple):
      2     a: int
      3     b: float
      4     def __repr__(self):
      5         return super(object, self).__repr__()

RuntimeError: __class__ not set defining 'Test' as <class '__main__.Test'>. Was __classcell__ propagated to type.__new__?
Run Code Online (Sandbox Code Playgroud)
In [3]: class Test(typing.NamedTuple): 
   ...:     a: int 
   ...:     b: float 
   ...:     #def __repr__(self): 
   ...:     #    return super(object, self).__repr__() 
   ...:                                                                         

>>> # works
Run Code Online (Sandbox Code Playgroud)

super(object, self).__repr__调用的目的是使用标准'<__main__.Test object at 0x7fa109953cf8>' __repr__而不是打印出元组元素的所有内容(默认情况下会发生这种情况)。有一些 关于导致类似错误的问题 …

python super python-3.6 python-3.8

11
推荐指数
2
解决办法
588
查看次数

PyCharm无法找到模块'math'

我的环境PyCharm 4.5与Python 3.5

在此输入图像描述

它可以成功运行,但是找不到模块的警告math,并且无法完成方法提示.

我试过这个:

import imp
imp.find_module('math')

(<_io.BufferedReader name='/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/math.cpython-35m-darwin.so'>, '/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/math.cpython-35m-darwin.so', ('.cpython-35m-darwin.so', 'rb', 3))
Run Code Online (Sandbox Code Playgroud)

我是Python的新手,我认为这不是math.py.我该如何解决?

python pycharm

10
推荐指数
1
解决办法
3970
查看次数

仅汇总列表中包含的数字

给出一个总和a中所有数字的方法list.该方法应该能够跳过不是数字的元素.所以,sum([1, 2, 3])应该6sum(['A', 1, 'B', 2, 3]) 应该如此6.我怎么能做到这一点?

到目前为止我已经尝试过的内容:

def foo(list):
    dict = "ABCDEFGHIJKLMN"
    n = 0
    for i in range(0, len(list) - 1):
        if list[i].str in dict:
            ""
        else:    
            n= n + list[i]
    return n

print foo([1, 2, 3, 4, 5, 6, "A", "B"])
Run Code Online (Sandbox Code Playgroud)

python list python-2.7

10
推荐指数
3
解决办法
3392
查看次数