小编mkr*_*er1的帖子

使用 try 将 String 转换为 Float

我尝试解析一个文件。它是一个 3d 点列表。我编写了这个函数来提取一行的第一个和第二个数字。现在我想检查从 String 到 Float(read function) 的转换是否成功。如果转换成功,我想返回 Point(Just Point2D),而在尝试失败时返回 Nothing。问题是这个案例想要一个 IO 但得到一个简单的。代码是从这篇文章中抽象出来的:Haskell 中的异常处理

-- | reads out of a splitted line the first and second of the list and returns a list of Points2D
    pointExtraction 
        :: [String] 
        -> Maybe Point2D
    pointExtraction (x:y:tail) = do 
        let result = try ( evaluate (createPoint x y )) :: IO (Either SomeException Point2D)
        case result of 
            Left ex -> Nothing        
            Right point -> (Just point)

createPoint :: String -> String -> Point2D …
Run Code Online (Sandbox Code Playgroud)

haskell

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

通过numpy数组用行和列替换子集pandas数据框

我想使用 numpy 数组来替换 Pandas 数据帧中的子集数据帧。

例如:一个熊猫数据框df

df_subset = df.loc[[1,3,5,7,9], ["A", "B", "C"]]
Run Code Online (Sandbox Code Playgroud)

这里,子集数据帧的维度为(5, 3)

下面是 numpy 数组示例,其形状与我想替换为的子集数据帧相同:

replace_value = np.array([[1, 2, 3], [4, 4, 4], [1, 6, 8], [1, 3, 6], [8, 0, 1]])
Run Code Online (Sandbox Code Playgroud)

有没有类似的方法:

df_subset.values = replace_value 
Run Code Online (Sandbox Code Playgroud)

我希望的是我替换的值会直接改变df. 这意味着如果我df再次使用相同的索引和列进行子集化,我将获得与我replace_value如上分配的 numpy 数组一样的确切值。

python data-manipulation dataframe python-3.x pandas

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

拆分后为什么要在此处添加 \t 和 \x08?如何避免这种转换?

>>> output = "10.1.1.2\11.1.1.2$11.1.1.2\10.1.1.2"
>>> output.split("$")
['10.1.1.2\t.1.1.2', '11.1.1.2\x08.1.1.2']
Run Code Online (Sandbox Code Playgroud)

python

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

为什么我的 Python 数据类没有正确初始化布尔值?

我目前正在为期权定价编写一些代码,同时我一直在尝试使用 Python 数据类进行试验。这里我有两个类,Option()and Option2(),前者用数据类语法编写,后者用传统类语法编写。

from dataclasses import dataclass, field
from typing import Optional

@dataclass
class Option:
    is_american: Optional[bool] = field(default=False)
    is_european: Optional[bool] = not is_american

class Option2:
    def __init__(is_american=False):
        self.is_european = not is_american

if __name__ == "__main__":
    eu_option1 = Option()
    print(f"{eu_option1.is_european = }")
    
    eu_option2 = Option2()
    print(f"{eu_option2.is_european = }")
Run Code Online (Sandbox Code Playgroud)

输出给出

eu_option1.is_european = False
eu_option2.is_european = True
Run Code Online (Sandbox Code Playgroud)

然而,非常奇怪的事情发生了。注意在这种Option2()情况下,默认情况下is_american是如何设置False的,因此is_european必须是True并且确实如此,所以这是预期的行为。

但在这种dataclass Option()情况下,is_americanFalse默认设置为。但是,无论出于何种原因,数据类都没有触发is_european: Optional[bool] …

python boolean python-3.x python-dataclasses

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

如何使用 .gitignore 忽略目录中除一个文件之外的所有内容?

我在这里找到了几个据称可以解决此问题的解决方案,但由于某种未知的原因,它们都不适合我。

我需要忽略给定文件夹中除一个特定文件之外的所有内容。容易,对吧?没那么快。

对于这些问题,我已经尝试了几乎所有建议的答案:

...但我并没有比开始时更进一步。

这是要包含的文件的路径:

D:\Projects\Website\Website\bin\Settings.json
Run Code Online (Sandbox Code Playgroud)

回购协议位于:

D:\Projects\Website
Run Code Online (Sandbox Code Playgroud)

我的.gitignore文件是由 Visual Studio 生成的,因此它包含以下条目:

[Bb]in/
Run Code Online (Sandbox Code Playgroud)

根据上面问题的许多答案,我应该能够做这样的事情:

!/Website/[Bb]in/Settings.json
Run Code Online (Sandbox Code Playgroud)

...但这行不通。该文件仍然被忽略。

这些排列都不起作用:

!*/Settings.json
!**/Settings.json
![Bb]in/Settings.json
![Bb]in/**/Settings.json
![Ww]ebsite/[Bb]in/Settings.json
!Website/bin/Settings.json
!/Website/bin/Settings.json
Run Code Online (Sandbox Code Playgroud)

我还尝试将一个单独的.gitignore文件放入bin

# Don't block Settings.json
!Settings.json
!.gitignore
Run Code Online (Sandbox Code Playgroud)

没有运气。

如何阻止除文件[Bb]in之外的所有内容Settings.json

  • 预期结果: Website\bin\Settings.json不被忽略

  • 实际结果: Website\bin\Settings.json继续被忽略

git gitignore

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

Haskell 函数格式

我想知道:写这个:

(<$>) :: (a -> b) -> Parser a -> Parser b
(<$>) f  p1 s =  case p1 s of
    Just (r1 , s') -> Just (f r1, s')
    Nothing ->  Nothing
Run Code Online (Sandbox Code Playgroud)

而不是这个:

(<$>) :: (a -> b) -> Parser a -> Parser b
f <$>  p1 = \s ->  case p1 s of
    Just (r1 , s') -> Just (f r1, s')
    Nothing ->  Nothing
Run Code Online (Sandbox Code Playgroud)

改变什么?

haskell

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

choice() 需要 2 个位置参数,但给出了 3 个,但很确定我给出了 2 个

我正在模拟蒙蒂霍尔问题,这个片段是交换部分。

import random

i = 0
eliminated = 0
while i < 10:
    i += 1
    randFirstChoice = random.randint(1,3)
    if randFirstChoice == 1:
        eliminated += random.choice(2, 3)
    elif randFirstChoice == 2:
        eliminated += random.choice(1, 3)
    elif randFirstChoice == 3:
        eliminated += random.choice(1, 2)
    print(eliminated)
Run Code Online (Sandbox Code Playgroud)

每当我运行这个时,我都会收到错误

类型错误: choice() 需要 2 个位置参数,但给出了 3 个

它给出的错误行号是 3 个条件语句。我很困惑,因为我认为这random.choice会让我在两个数字之间随机选择,据我所知,这就是我试图做的。

python

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

perf_counter 返回错误的时间

我运行了这个简单的代码:

import time
print(time.perf_counter())
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,输出是9851.549930951。该代码运行时间不到一秒,而且我没有使用perf_counter_ns. 这在其他程序中也是一个问题。perf_counter对于线程完成执行所需的秒数,输出 9000+ 而不是 0.9。输出总是很快,但答案总是 9000+,如 9851.549930951 中所示。

python time

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

使用分隔符将大文本文件拆分为多个文件

我想使用像这样的分隔符将一个大文本文件拆分为多个文本文件[TEST],如下所示:

texttexttext
texttexttext
texttexttext
[TEST] title1
texttexttext1
texttexttext1
texttexttext1
[TEST] title2
texttexttext2
texttexttext2
texttexttext2
[TEST] title3
texttexttext3
texttexttext3
texttexttext3
Run Code Online (Sandbox Code Playgroud)

它应该分成多个文本文件:

title1.txt 包含:

texttexttext1
texttexttext1
texttexttext1
Run Code Online (Sandbox Code Playgroud)

title2.txt 包含:

texttexttext2
texttexttext2
texttexttext2
Run Code Online (Sandbox Code Playgroud)

title3.txt 包含:

texttexttext3
texttexttext3
texttexttext3
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python text split delimiter

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

为什么 if-else 序列末尾缺少“end if”?

错误是

teclat.vhdl:57:12:需要“if”而不是“process”

end if是它应该在的地方。我不明白为什么它不能像缺少end ifalways一样编译。

architecture v1 of teclat is
begin
    process(Buttons, COL, ROW) begin

    if (Buttons(1) = '1') then
        COL <= "100";
        ROW <= "100";
    else if (Buttons(2) = '1') then
        COL <= "010";
        ROW <= "100";
    else if (Buttons(3) = '1') then
        COL <= "001";
        ROW <= "100";
    else 
        ROW <= "111";
    end if;

    end process;
end v1;
Run Code Online (Sandbox Code Playgroud)

if-statement vhdl

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