我一直在阅读文档,许多解释和示例都levels被视为理所当然.Imho文档缺乏对数据结构和定义的基本解释.
数据框中的级别是什么?MultiIndex索引中的级别是多少?
如何输入可选输出参数提示:
def myfunc(
x: float,
return_y: bool = False
) -> float, Optional[float] : # !!! WRONG !!!
# ... code here
#
# y and z are floats
if return_y:
return z, y
return z
Run Code Online (Sandbox Code Playgroud)
- - 编辑
-> Tuple[float, Union[None, float]] :
Run Code Online (Sandbox Code Playgroud)
但这太丑陋了,似乎掩盖了一个事实,即通常它只会返回一个简单的浮点数。这是正确的方法吗?
正确的方法请参阅下面的答案。
---编辑2
此问题被标记为该问题的重复项。然而,那个问题是关于Union返回类型的,而这个问题是关于Optional返回类型的。
注意:这种设计不是一个好的实践,应该避免,以支持一致的返回类型。尽管如此,如果必须这样做,可选输出参数意味着根据输入参数的标志可能不会返回的参数。
这三个函数的返回类型提示有什么区别吗?
def my_func1():
print("Hello World")
return None
def my_func2():
print("Hello World")
return
def my_func3():
print("Hello World")
Run Code Online (Sandbox Code Playgroud)
它们是否都应该有-> None返回类型提示,因为这就是它们实际上显式或隐式返回的内容?或者应该my_func2或my_func3实际上没有返回类型提示?
问这个问题的动机是这个问题,这个很好的答案,以及我正在学习Type Hints的事实。
在python 3中,我有一个各种格式的图像列表(pdf、png、jpg、gif),我将它们全部合并到一个多页pdf中。
使用PyPDF2,可以合并 PDF 文件。但不支持 png、jpg 等。此处对此进行了很好的介绍:
合并 PDF 文件
使用img2pdf,可以将 png、jpg 等图像类型转换为 PDF 并进行合并。但是,它不支持输入 PDF 文件。此处:
从图像列表创建 PDF
因此,由于我可以将 PDF、PNG、JPG 作为输入,因此我习惯这样处理它:
from PyPDF2 import PdfFileMerger
import img2pdf
if not ext == 'pdf':
with open("output.pdf", "wb") as f:
f.write(img2pdf.convert(images))
else:
merger = PdfFileMerger()
for pdf in images:
merger.append(pdf)
merger.write("output.pdf")
Run Code Online (Sandbox Code Playgroud)
问题是:我是否需要这 2 个库来将一系列图像(包括 PDF)合并到一个 PDF 中?换句话说,是否有一个库可以将任何图像(包括 PDF)作为输入,并将它们全部合并为一个 PDF?
在I / O方面,我希望Python和C具有类似的性能,但是我看到C对于类似的实现比Python快1.5到2倍。
任务很简单:串联成千上万个〜250字节的文本文件,每个文件包含两行:
Header1 \t Header2 \t ... HeaderN
float1 \t float2 \t ... floatN
Run Code Online (Sandbox Code Playgroud)
标头对于所有文件都是相同的,因此只能读取一次,并且输出文件如下所示:
Header1 \t Header2 \t ... HeaderN
float1 \t float2 \t ... floatN
float1 \t float2 \t ... floatN
float1 \t float2 \t ... floatN
... thousands of lines
float1 \t float2 \t ... floatN
Run Code Online (Sandbox Code Playgroud)
这是我在C中的实现:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <time.h>
#define LINE_SIZE 300
#define BUFFER_SZ 5000*LINE_SIZE
void combine(char *fname) {
DIR *d;
FILE * fp;
char line[LINE_SIZE];
char buffer[BUFFER_SZ];
short …Run Code Online (Sandbox Code Playgroud) 我有一本属性及其极限值的字典。对于包含“max”的属性,限制值为允许的最大值。对于最小值也是如此。
我正在尝试创建一个函数字典。每个函数都会根据列表属性的限制值检查输入值。
limits = {'variable1 max': 100,
'variable1 min': 10}
check_acceptable = {key: (lambda x: x < lim) if 'max' in key else
(lambda x: x > lim)
for key, lim in limits.items()}
# Now, I'd expect this to be True, since 90 < 100:
check_acceptable['variable1 max'](90)
Out: False
Run Code Online (Sandbox Code Playgroud)
这里发生的事情是 lambda 函数被分配了变量lim,并且在 for 循环中,lim最后一个值为 10,那么我的第一个 lambda 函数是错误的。
我该如何解决这个问题?
--- 编辑 - 添加相同行为的更通用示例:
funcs = []
for i in range(5):
funcs.append(lambda _: i)
for j in range(5): …Run Code Online (Sandbox Code Playgroud) 我对网络应用程序的经验几乎为零,所以必须在这里问一些非常基本甚至放错地方的问题。
所以,我构建了一个 Plotly-Dash 应用程序,它在localhost:8050或127.0.0.1:8050.
问题是:如何从同一局域网中的另一台计算机访问此应用程序服务器?
到目前为止,我试图访问http://x.y.z.w/8050与x.y.z.w作为服务器的局域网IP地址(平云OK)。我得到的是:
Run Code Online (Sandbox Code Playgroud)This site can’t be reached x.y.z.w refused to connect.
当我尝试从服务器计算机本身访问服务器时也是如此,但使用 LAN IP 而不是localhost或127.0.0.1。平没问题。
请注意,服务器计算机(我的笔记本电脑)通过 VPN 连接到公司网络,但我认为这不会改变任何事情,因为这是 VPN 的全部目的。然后我将桌面远程连接到办公室的计算机并尝试访问我的服务器。
我想知道为什么这个尺寸可达1e8.对于大于1e8的大小,编译器说"大小太大".
#include <stdio.h>
int main() {
printf("allocating...\n");
static float m[(int)1e8];
printf("done\n");
}
Run Code Online (Sandbox Code Playgroud)
虽然这只能达到1e5.如果size设置为1e6,它编译正常,但在运行时甚至在打印第一行之前崩溃.
#include <stdio.h>
int main() {
printf("allocating...\n");
float m[(int)1e5];
printf("done\n");
}
Run Code Online (Sandbox Code Playgroud)
这些限制是什么?为什么static有更高的限制?
编辑:平台是windows7中的MinGW64.尚未在linux中测试过.
当我按下按钮时,会运行一些耗时的代码。当它运行时,我想避免按钮响应任何进一步的单击。代码完成后,可以重新启用按钮并处理进一步的点击。
我正在尝试使用以下方法来做到这一点:
self.btn.blockSignals(True)
self.btn.setEnabled(False)
... code ...
self.btn.blockSignals(True)
self.btn.setEnabled(False)
Run Code Online (Sandbox Code Playgroud)
但是,如果我快速单击此按钮 10 次,代码将执行 10 次...
实际上,我会将耗时的代码移至另一个线程。(编辑:但问题仍然是相同的 - 我认为??。实际上解决了它。请参阅已接受的答案。)
当某些程序正在运行时,如何阻止或忽略对按钮的点击?
这是我的代码的最小版本:
import time
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
grid = QtGui.QGridLayout()
self.setLayout(grid)
self.btn = QtGui.QPushButton('Count')
grid.addWidget(self.btn, 1, 1)
self.txt1 = QtGui.QTextEdit()
grid.addWidget(self.txt1, 1, 2)
self.btn.clicked.connect(self.click)
self.count = 0
self.show()
def click(self):
# Here I want to block any further click in the button, but it is
# not …Run Code Online (Sandbox Code Playgroud) 在linux中,我正在编写一个脚本来将系统参数记录到文件中.
如何获取占用最多CPU资源的任务名称以及该任务使用的CPU百分比?
例如,使用top:
$ top -bin 1
top - 19:11:05 up 2:57, 1 user, load average: 1,43, 1,47, 1,06
Tasks: 178 total, 2 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5,8 us, 1,3 sy, 0,0 ni, 92,8 id, 0,0 wa, 0,0 hi, 0,1 si, 0,0 st
KiB Mem : 3892704 total, 1594348 free, 1282992 used, 1015364 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2335136 avail Mem
PID USER PR NI VIRT RES SHR S %CPU …Run Code Online (Sandbox Code Playgroud) python ×7
c ×2
type-hinting ×2
arrays ×1
bash ×1
dataframe ×1
grep ×1
io ×1
linux ×1
memory ×1
multi-index ×1
pandas ×1
pdf ×1
performance ×1
plotly-dash ×1
pypdf ×1
pyqt4 ×1
python-3.x ×1
qpushbutton ×1
static ×1