小编mkr*_*er1的帖子

左右之间的区别

我目前正在阅读优秀的"了解你是一个很好的Haskell",在关于仿函数部分中有一个Either我不明白的例子:

ghci> fmap (replicate 3) (Right "blah")
Right ["blah","blah","blah"]
Run Code Online (Sandbox Code Playgroud)
ghci> fmap (replicate 3) (Left "foo")
Left "foo"
Run Code Online (Sandbox Code Playgroud)

后者为什么不Left ["foo", "foo", "foo"]呢?

haskell

9
推荐指数
1
解决办法
1744
查看次数

使用Python和Click创建shell命令行应用程序

我正在使用click(http://click.pocoo.org/3/)来创建命令行应用程序,但我不知道如何为此应用程序创建shell.
假设我正在编写一个名为test的程序,我有一个名为subtest1subtest2的命令

我能够从终端工作,如:

$ test subtest1
$ test subtest2
Run Code Online (Sandbox Code Playgroud)

但我在考虑的是一个shell,所以我可以这样做:

$ test  
>> subtest1  
>> subtest2
Run Code Online (Sandbox Code Playgroud)

点击可以实现吗?

python command-line-interface python-click

9
推荐指数
1
解决办法
4110
查看次数

具有不同窗口规格的链式火花列表达式会产生低效的 DAG

语境

假设您处理时间序列数据。您想要的结果依赖于具有不同窗口规格的多个窗口函数。结果可能类似于单个火花列表达式,例如间隔标识符。

现状

通常,我不使用df.withColumn链式/堆栈列表达式来存储中间结果,并且相信 Spark 会找到最有效的 DAG(在处理 DataFrame 时)。

可重现的例子

但是,在以下示例(PySpark 2.4.4 独立版)中,存储中间结果df.withColumn降低了 DAG 的复杂性。让我们考虑以下测试设置:

import pandas as pd
import numpy as np

from pyspark.sql import SparkSession, Window
from pyspark.sql import functions as F

spark = SparkSession.builder.getOrCreate()

dfp = pd.DataFrame(
    {
        "col1": np.random.randint(0, 5, size=100),
        "col2": np.random.randint(0, 5, size=100),
        "col3": np.random.randint(0, 5, size=100),
        "col4": np.random.randint(0, 5, size=100),        
    }
)

df = spark.createDataFrame(dfp)
df.show(5)
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
import numpy as np

from pyspark.sql import SparkSession, Window …
Run Code Online (Sandbox Code Playgroud)

python dataframe directed-acyclic-graphs apache-spark pyspark

9
推荐指数
1
解决办法
229
查看次数

python子进程不继承虚拟环境

在 Windoes 10 上使用 venv 进行操作时,如果我从目录中的文件调用子进程,则该子进程似乎无法访问 venv。有办法让它发挥作用吗?

理想情况下,我希望该方法能够移植到 Linux,但我会采取任何使项目运行的方法。

这是我的测试:

  • main.py 使用 Popen 调用 sub_proc.py。
  • sub_proc.py 导入 uuid_shortener,该文件已安装在虚拟环境中。

如果我直接运行 sub_proc.py 它会运行而不会出现错误。

但是,如果我运行 main.py,我会在 uuid_shortener 的导入语句上看到错误。

主要.py

import subprocess
import time

print(subprocess.Popen(['python', 'sub_proc.py']))
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

子进程.py

import uuid_shortener
Run Code Online (Sandbox Code Playgroud)

这是运行代码的输出。

import subprocess
import time

print(subprocess.Popen(['python', 'sub_proc.py']))
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

(上面没有错误)

import uuid_shortener
Run Code Online (Sandbox Code Playgroud)

python windows subprocess python-3.x python-venv

9
推荐指数
1
解决办法
3068
查看次数

“带锁异步”和“带等待锁”有什么区别?

我见过两种获取asyncio Lock 的方法

async def main(lock):
  async with lock:
    async.sleep(100)
Run Code Online (Sandbox Code Playgroud)

async def main(lock):
  with await lock:
    async.sleep(100)
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?

python python-asyncio

9
推荐指数
1
解决办法
460
查看次数

x += y 和 x = x + y 之间的执行时间差

我试图将我的解决方案提交给 leetcode 问题,其中xy是列表和使用

x = x + y
Run Code Online (Sandbox Code Playgroud)

给我一个时间超过限制 而使用

x += y
Run Code Online (Sandbox Code Playgroud)

通过了测试用例并给了我AC

两者之间的执行时间差异以及两者执行方式的差异是多少?

python list python-3.x

9
推荐指数
1
解决办法
408
查看次数

Python中带条件的对象过滤列表

我有一个这样的列表结构:

listpost =
[
   {
      "post_id":"01",
      "text":"abc",
      "time": datetime.datetime(2021, 8, 5, 15, 53, 19),
      "type":"normal",
   },
   {
      "post_id":"02",
      "text":"nothing",
      "time":datetime.datetime(2021, 8, 5, 15, 53, 19),
      "type":"normal",
   }
]
Run Code Online (Sandbox Code Playgroud)

如果只有 [text] 具有“abc”,我想按 [text] 键中的文本过滤列表

所以这个例子看起来像这样

listpost =
[
   {
      "post_id":"01",
      "text":"abc",
      "time": datetime.datetime(2021, 8, 5, 15, 53, 19),
      "type":"normal",
   }
]
Run Code Online (Sandbox Code Playgroud)

我的代码:

from facebook_scraper import get_posts

listposts = []

for post in get_posts("myhealthkkm", pages=1):
    listposts.append(post)
print(listposts)


Run Code Online (Sandbox Code Playgroud)

python

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

git difftool 忽略 textconv 驱动程序

git diff考虑到我的textconv 驱动程序,但git difftool -d --textconv没有。为什么?如何解决?

我的~/.gitconfig包含其他设置:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
[diff "ipynb"]
    textconv = nbcatsrc
Run Code Online (Sandbox Code Playgroud)

而我的.gitattributes是:

*.ipynb diff=ipynb
Run Code Online (Sandbox Code Playgroud)

git

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

迭代对象字典

我有一个对象字典,其中包含电子表格中的“名称/范围”。在处理电子表格时,我需要更新与范围关联的值。

保存此信息的类如下所示:

class varName:
    name = None
    refersTo = None
    refersToR1C1 = None
    value = None
    def __init__(self, name, refersTo, refersToR1C1, value):
        self.name = name
        self.refersTo = refersTo
        self.refersToR1C1 = refersToR1C1
        self.value = value
Run Code Online (Sandbox Code Playgroud)

我创建字典如下:

staticNames = {}
wbNames = wb.Names
for name in wbNames:
    (nSheet, nAddr) = name.RefersTo.split("!") 
    print "Name:  %s    Refers to:  %s    Refers to R1C1:  %s       Value:  %s  " % (name.Name, name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '')).Range(nAddr).value) 
    staticNames[name.Name] = varName(name.Name, name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '') ).Range(nAddr).value)
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常。我可以在调试中看到字典和包含的对象。当我返回基于处理电子表格更新字典中的对象时,我迷路了。我调用这个函数:

def updateStaticNames(ws, r, …
Run Code Online (Sandbox Code Playgroud)

python dictionary loops object

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

Async/await not working AWS lambda, skipping everything after await

I'm trying to use AWS lambda to test a few API calls using axios, however I'm having some trouble. Every post I came across said the best way to handle promises in Lambda was to use async/await rather than .then, so I made the switch. When I run the program using node it works perfectly, but when I invoke the Lambda locally, it seems like everything after the axios call is being skipped. When I invoke the Lambda …

amazon-web-services node.js async-await aws-lambda

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