我需要创建一个包含某些运行结果的箱形图 - 对于每个运行,我都有最小输出,最大输出,平均输出和标准偏差.这意味着我将需要16个带有标签的箱形图.
到目前为止我遇到的例子描绘了一个数字分布,但在我的情况下,这是不可行的.
在Python(Matplotlib)/ R中有没有办法做到这一点?
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)
为什么?
我正在阅读一个包含数十万个代表图表边缘的数字对的大文件.我想建立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) 我有以下代码重现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 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) 'Hello ' + 1 在Python 3.5和3.6上没有返回相同的错误消息:
TypeError: Can't convert 'int' object to str implicitlyTypeError: must be str, not int这是一个简单的措辞改变还是有更微妙的背后?
以下内容摘自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)
以下两个案例:
从Python REPL中,如果我们定义它们(或者如果我们将它们放在一个文件中则导入它们),然后使用以下命令跳转启动递归:
Task(recursive(0)).step()
Run Code Online (Sandbox Code Playgroud)
它开始打印,似乎已超过递归限制.它显然不会超过它,打印堆栈级别表明它在整个执行过程中保持不变.还有其他事情我不太明白.
注意:如果你这样执行它,你需要杀死python进程.
如果我们将所有内容(Task,recursive)放在一个文件中:
if __name__ == "__main__":
Task(recursive(0)).step()
Run Code Online (Sandbox Code Playgroud)
然后运行它python myfile.py,它停止滴答7( …
我的代码在 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__而不是打印出元组元素的所有内容(默认情况下会发生这种情况)。有一些 关于导致类似错误的问题 …
我的环境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.我该如何解决?
给出一个总和a中所有数字的方法list.该方法应该能够跳过不是数字的元素.所以,sum([1, 2, 3])应该6但sum(['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 ×10
python-3.x ×5
list ×3
pycharm ×2
python-2.7 ×2
python-3.6 ×2
boolean ×1
coroutine ×1
file ×1
generator ×1
macos ×1
matplotlib ×1
python-3.5 ×1
python-3.8 ×1
r ×1
recursion ×1
string ×1
super ×1
type-hinting ×1
typeerror ×1