小编ntg*_*ntg的帖子

将Java数组转换为Iterable

我有一个基元数组,例如int,int [] foo.它可能是一个小型的,或不是.

int foo[] = {1,2,3,4,5,6,7,8,9,0};
Run Code Online (Sandbox Code Playgroud)

从中创建一个最好的方法是Iterable<Integer>什么?

Iterable<Integer> fooBar = convert(foo);
Run Code Online (Sandbox Code Playgroud)

笔记:

请不要回答使用循环(除非你可以很好地解释编译器如何对它们做一些聪明的事情?)

另请注意

int a[] = {1,2,3};
List<Integer> l = Arrays.asList(a);
Run Code Online (Sandbox Code Playgroud)

甚至不会编译

Type mismatch: cannot convert from List<int[]> to List<Integer>
Run Code Online (Sandbox Code Playgroud)

还要检查 为什么数组不能分配给Iterable? 在回答之前.

此外,如果你使用一些库(例如,番石榴),请解释为什么这是最好的.(因为它来自谷歌不是一个完整的答案:P)

最后,由于似乎有关于此的功课,避免发布家庭作业代码.

java arrays iterable

135
推荐指数
6
解决办法
14万
查看次数

显示比"无JSON对象可以解码"更好的错误消息

用于从一些冗长复杂的JSON文件加载数据的Python代码:

with open(filename, "r") as f:
  data = json.loads(f.read())
Run Code Online (Sandbox Code Playgroud)

(注意:最好的代码版本应该是:

with open(filename, "r") as f:
  data = json.load(f)
Run Code Online (Sandbox Code Playgroud)

但都表现出类似的行为)

对于许多类型的JSON错误的(缺少分隔符,在字符串中不正确的反斜杠,等等),这个打印包含在那里被发现的JSON错误的行和列数一个不错的有用信息.

但是,对于其他类型的JSON错误(包括经典的"在列表中的最后一项上使用逗号",还有其他内容,如大写true/false),Python的输出只是:

Traceback (most recent call last):
  File "myfile.py", line 8, in myfunction
    config = json.loads(f.read())
  File "c:\python27\lib\json\__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "c:\python27\lib\json\decoder.py", line 360, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)

对于那种类型的ValueError,你如何让Python告诉你JSON文件中的错误在哪里?

python json

124
推荐指数
3
解决办法
25万
查看次数

如何避免在Pycharm中对字符串进行拼写检查

在PyCharm IDE的字符串上禁用拼写检查的选项在哪里?我讨厌我的评论和字符串下的锯齿状线条.

python syntax pycharm

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

如何从脚本中提取PDF文档的标题以进行重命名?

我的计算机里有成千上万的PDF文件,这些文件的名称来自a0001.pdfa3621.pdf,每个文件的内部都有一个标题; 例如,"碳酸铝" a0001.pdf,"硝酸铝" a0002.pdf等,我想提取重命名我的文件.

我用这个程序重命名一个文件:

path=r"C:\Users\YANN\Desktop\..."

old='string 1'
new='string 2'

def rename(path,old,new):
    for f in os.listdir(path):
        os.rename(os.path.join(path, f), os.path.join(path, f.replace(old, new)))

rename(path,old,new)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有解决方案提取嵌入在PDF文件中的标题来重命名文件?

python pdf file python-3.x

15
推荐指数
2
解决办法
7918
查看次数

在python中获取系统本地时区

看起来很奇怪,但我找不到使用Python中的Pandas/pytz找到本地时区的简单方法.

我可以:

>>> pd.Timestamp('now', tz='utc').isoformat()
Out[47]: '2016-01-28T09:36:35.604000+00:00'
>>> pd.Timestamp('now').isoformat()
Out[48]: '2016-01-28T10:36:41.830000'
>>> pd.Timestamp('now').tz_localize('utc') - pd.Timestamp('now', tz='utc')
Out[49]: Timedelta('0 days 01:00:00')
Run Code Online (Sandbox Code Playgroud)

哪个会给我时区,但这可能不是最好的方法...在pytz或pandas中是否有命令来获取系统时区?(最好是在python 2.7中)

python pytz python-2.7 pandas timezone-offset

13
推荐指数
3
解决办法
2万
查看次数

Pandas:什么是NDFrame对象(以及什么是非NDFrame对象)

我试图连接两个DataFrames并收到'TypeError: cannot concatenate a non-NDFrame object'错误.我一直在环顾四周,有很多人遇到这个错误,大多数时候他们尝试做的事情不是他们的代码真正做的事情(所以答案解决了他们特别但无关的问题)

我的问题不是解决我的特定问题,而是要理解错误......什么是非NDFrame对象?为什么不能连接?

另外,为什么这是关于NDFrames(那些是什么,我在哪里使用它们?是所有DataFrames NDFrame?是否有任何NDFrame不是DataFrame?)...

我会理解,如果它说'TypeError: cannot concatenate a non-DataFrame object'(虽然我不确定他们不是DataFrames是我的错误的原因)这主要是我的好奇心任务,我不是想找到任何特定的bug ...

python concatenation dataframe pandas

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

如何在不复制的情况下从单个1D Numpy数组构造Pandas DataFrame

与我可以找到的其他每个问题不同,我不想从同构的Numpy数组创建DataFrame,也不想将结构化数组转换为DataFrame。

我想要的是为每列从单个1D Numpy数组创建一个DataFrame。我尝试了visible DataFrame({"col": nparray, "col": nparray}),但是它显示在我的个人资料的顶部,因此它的运行速度确实很慢。

据我了解,Pandas DataFrames是在纯Python中实现的,每个列均由Numpy数组支持,因此我认为有一种有效的方法。

我实际上想做的是从Cython高效地填充DataFrame。Cython具有允许有效访问Numpy阵列的内存视图。所以我的策略是分配一个Numpy数组,将其填充数据,然后将其放入DataFrame中。

相反的效果很好,可以从Pandas DataFrame创建一个memoryview。因此,如果有一种方法可以预分配整个DataFrame,然后仅将列传递给Cython,这也是可以接受的。

cdef int32_t[:] data_in = df['data_in'].to_numpy(dtype="int32")
Run Code Online (Sandbox Code Playgroud)

我的代码配置文件的一部分如下所示,其中通过在最后创建DataFrame完全使代码所做的一切相形见war。

         1100546 function calls (1086282 primitive calls) in 4.345 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    4.345    4.345 profile:0(<code object <module> at 0x7f4e693d1c90, file "test.py", line 1>)
    445/1    0.029    0.000    4.344    4.344 :0(exec)
        1    0.006    0.006    4.344    4.344 test.py:1(<module>)
     1000    0.029    0.000    2.678    0.003 :0(run_df)
     1001    0.017    0.000    2.551    0.003 frame.py:378(__init__)
     1001    0.018    0.000    2.522 …
Run Code Online (Sandbox Code Playgroud)

python numpy cython dataframe pandas

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

PyCharm - 如何挂起所有线程

我们使用PyCharm 5.0.1进行多线程调试.
当它在断点处停止时,只有特定线程停止而所有其他线程继续.这使得很难"冻结时刻"并检查params值以及其他线程的当前状态.

当其中一个线程在断点处停止时,是否可以暂停所有线程?

这可能是最新的Pycharm 2016还是[最新] Pycharm版本?

python debugging multithreading suspend pycharm

8
推荐指数
1
解决办法
1984
查看次数

FastAPI / uvicorn(或 hypercorn):我的根路径在哪里?

基于一些 FastAPI 教程(包括本教程),我制作了一个简单的 FastAPI 应用程序:

from fastapi import FastAPI, Request
app = FastAPI() # also tried FastAPI(root_path="/api/v1")

@app.get("/app")
def read_main(request: Request):
    return {"message": "Hello World", "root_path": request.scope.get("root_path")}
Run Code Online (Sandbox Code Playgroud)

我想在 root 以外的路径(例如 /api/vi)...再次基于大多数教程和常识,我尝试以以下方式启动它:

uvicorn main:app --root-path /api/v1
Run Code Online (Sandbox Code Playgroud)

服务正常(在http://127.0.0.1:8000),但是,root-path似乎被忽略:任何GET请求都会http://127.0.0.1:8000/给出:

message "Hello World"
root_path   "/api/v1"
Run Code Online (Sandbox Code Playgroud)

以及任何GET要求http://127.0.0.1:8000/api/v1提供:

detail  "Not Found"
Run Code Online (Sandbox Code Playgroud)

我希望这些请求会产生相反的结果......这是怎么回事?!?

我还尝试初始化 FastAPIFastAPI(root_path="/api/v1")以及切换到 hypercorn 但无济于事...

应用程序版本的详细信息(我可能也尝试过其他一些应用程序,尽管这些应该是最新尝试的):

python                    3.9.7           hf930737_3_cpython    conda-forge
fastapi                   0.85.1             pyhd8ed1ab_0    conda-forge
uvicorn                   0.20.0           py39h06a4308_0  
hypercorn                 0.14.3           py39hf3d152e_1    conda-forge
Run Code Online (Sandbox Code Playgroud)

python fastapi uvicorn hypercorn

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

是否有可能/如何获取在 python 上运行 pythran 生成的 C++ 代码

Pythran 是 Python 到 C++ 的编译器,用于包含部分 numpy 支持的 Python 子集。它的作用有点像 Numba 和 Cython——你注释一个函数的参数,然后它接管进一步的类型注释和代码专门化。它利用了矢量化的可能性和基于 OpenMP 的并行化的可能性。

在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 C++...

可以这样做吗?如果我想使用的函数依赖于另一个函数怎么办?如果其他函数是从单独的模块导入的怎么办?是否有此类过程的示例/教程?

python code-translation pythran

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