问题列表 - 第318039页

从 Python 列表中删除某些最终值

有没有一种优雅的 Pythonic 方式来执行类似rstrip()列表的操作?

想象一下,我有不同的列表:

l1 = ['A', 'D', 'D']
l2 = ['A', 'D']
l3 = ['D', 'A', 'D', 'D']
l4 = ['A', 'D', 'B', 'D']
Run Code Online (Sandbox Code Playgroud)

我需要一个函数来从给定列表中删除所有最终存在的 'D'元素(但不是那些位于其他元素之前或之间的元素!)。

for mylist in [l1, l2, l3, l4]:
    print(mylist, ' => ', remove_end_elements(mylist, 'D'))
Run Code Online (Sandbox Code Playgroud)

所以期望的输出是:

['A', 'D', 'D'] => ['A']
['A', 'D'] => ['A']
['D', 'A', 'D', 'D'] => ['D', 'A']
['A', 'D', 'B', 'D'] => ['A','D','B']
Run Code Online (Sandbox Code Playgroud)

完成这项工作的一种实现是这样的:

def remove_end_elements(mylist, myelement):
    counter = 0
    for element in mylist[::-1]:
        if element …
Run Code Online (Sandbox Code Playgroud)

python list

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

如何将像烫手山芋一样的不透明值从一个枚举构造函数移动到下一个枚举构造函数?

我想将以下Padded类型放入迭代器转换器中:

enum Step<T> {
    Before(T),
    During(T),
    After
}

struct Padded<T> {
    step: Step<T>
}
Run Code Online (Sandbox Code Playgroud)

Step(请注意,在我的实际代码中,除了inside之外还有其他东西,因此有额外的从toPadded间接层。)structenum

这个想法是,在每次迭代中,我们总是更改我们的,因此将其中存储的Step内容移动到下一个的构造函数中应该是正确的。但是,我无法让它工作。TStep

简单版本:

impl<T: Iterator> Iterator for Padded<T> {
    type Item = Option<T::Item>;

    fn next(&mut self) -> Option<Self::Item> {
        match &self.step {
            Step::Before(start) => {
                self.step = Step::During(*start);
                Some(None)
            },
            Step::During(ref mut iter) => {
                match iter.next() {
                    Some(x) => { self.step = Step::During(*iter); Some(Some(x)) },
                    None => { self.step = Step::After; Some(None) },
                } …
Run Code Online (Sandbox Code Playgroud)

lifetime rust linear-types borrow-checker

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

NUnit 断言缺少定义

我已将 NUnit (4.0.1) 和 NUnit3Testadapter (4.5.0) 作为 NuGet 包安装在 Visual Studio 22 中。

编写了我的测试用例,但我收到了 Assert 类中缺少定义的错误:

错误 CS0117“断言”不包含“AreEqual”的定义

错误 CS0117“断言”不包含“IsNotEmpty”的定义

错误 CS0117“断言”不包含“IsTrue”的定义

我该如何解决这些问题?

  • 重新安装 NuGet 包
  • 重建解决方案
  • 清洗溶液
  • 已验证 NUnit 与 EPPlus 兼容

c# nunit visual-studio

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

为什么将函数名称括在括号中会禁用隐式声明?

这是有问题的构造:

int main (void)
{
    int a = 5;
    
    (func)(a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用 GNU GCC C99 编译会发生以下情况:

  • 如果func被定义为一个函数,那么main()该函数就会被执行。
  • 如果在编译器发出“func undeclared”错误func之前未定义为函数main

但是,如果我删除func函数周围的大括号,函数将被隐式声明,因此即使它是在另一个翻译单元中定义的,它也会执行,这是我一直期望的行为。

递归下降解析器通过函数调用表达式的存在来识别函数调用表达式(也根据标准),这(arguments)就是为什么像这样的代码3(a);会发出错误:“被调用的对象不是函数或函数指针”。就像其他类似的操作(例如后缀增量)一样,前面的内容(arguments)预计是一个子表达式 - 在这种情况下,约束需要一个函数或函数指针的操作数。对于所有其他操作,您可以随意添加任意数量的括号:((a))++这不会改变任何事情,但是对于函数调用,它看起来并不完全像那样。

为什么该代码的行为会有所不同,这是我不知道的语言功能,还是一些精心设计的解析设计选择的结果?

c gcc function

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

动态创建时如何知道点击了哪个menuItem?

这是我的观点:

public class AdminPage extends VBox {
    public AdminPage() {
        Menu menu = new Menu("Optional");
        int i;
        ArrayList<String> items = new ArrayList<>();
        items.add("Product");
        items.add("Profile");
        items.add("Home");

        for (i = 0; i < items.size(); i++) {
            menu.getItems().add(new MenuItem(items.get(i)));
        }
        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().add(menu);

        this.getChildren().addAll(menuBar);
        this.setAlignment(Pos.TOP_LEFT);
    }
}

Run Code Online (Sandbox Code Playgroud)

我想编写控制器,但问题是我如何知道点击了哪个项目。

菜单是这样的:

Optional
----------
Product
Home
Run Code Online (Sandbox Code Playgroud)

我希望如果我单击产品,则会打开另一个表单。我认为这是通过点击操作完成的。

java javafx

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

对同一张纸上两个不同列上的值进行匹配/排序

我正在尝试解决每周都会重复执行的任务。我所做的是将一列(A 列)与另一列(E 列)中的 ID 集进行比较,反之亦然。如果在第二列中找到第一列中的值,则该值将移动到值匹配的位置。如果两列中都没有匹配的数据,则该列将为空白。所有匹配的值都会下移,所有不匹配的值都会上移进行检查。

这是下面的示例数据,可在“示例”选项卡中找到:

A栏 B栏
399381935 375634552
407932943 399381935
409046041 407932943
448734453 409046041
452821913 431446526
459673358 448734453
463178020 448879624
485888087 452821913
498826033 458359366
498826520 459673358
503189964 463178020
509536058 485888087
509542349 497540933
510595029 498826033
510595505 498826520
510601532 502416642
511701201 502433066
512763252 503189964
515003633 506534952
515008102 509536058
520097636 509542349
510307762
510312887
510320772
510595029
510601532
511701201
512763252
515003633

希望运行脚本后,完成的数据应该具有如下所示的结果,其中所有匹配的数据都分组在下面,这些唯一值被推到上面,这样就更容易检查:

A栏 B栏
375634552
431446526
448879624
458359366
497540933
502416642
502433066
506534952
510307762
510312887
510320772
510595505
515008102
520097636
399381935 399381935
407932943 407932943
409046041 …

matching google-sheets google-apps-script

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

为什么编译器不能优化 try-catch 块中的单个 throw 语句?

我只是在编译器资源管理器中玩一些 C++ 代码,并在编译简单的try/catch块时注意到一些意外的行为。以下两个片段都是使用 gcc 使用优化标志编译的-O3(实时示例)。

在第一个程序中,整个try/catch块被删除,因为行为上没有明显的差异,从而产生与return 0;. 这正是我期望编译器产生的结果。

int main() {
    try {
        int x{ 10 };
    }
    catch (...) {
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)
main:
        xor     eax, eax
        ret
Run Code Online (Sandbox Code Playgroud)

在第二个片段中,我有throw一个例外,而不是仅仅初始化一个int. 抛出该异常后,我将继续使用catch-all 处理程序,该处理程序是空的。之后就只有return 0;声明了。这意味着该程序的可观察行为将与第一个程序相同。然而,大会表明,整个事情仍在try继续catch。

int main() {
    try {
        throw 10;
    }
    catch (...) {
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)
main:
        push    rcx
        mov …
Run Code Online (Sandbox Code Playgroud)

c++ error-handling exception try-catch compiler-optimization

14
推荐指数
0
解决办法
441
查看次数

使用 'len' 函数时,它返回结果到哪里?

我正在学习 Python 速成课程书,练习是使用“len”函数。

我输入

cars=['bmw', 'audi', 'toyota', 'subaru']
len(cars)
Run Code Online (Sandbox Code Playgroud)

但然后呢?我是否应该在这些行前面添加>>>,如书中所示?我也尝试过,但仍然没有得到任何答案。它应该显示在预览窗口的线条下方还是下方?是的,我为打印做了Ctrl+ 。B那也没有什么作用。

我正在使用 Sublime 来学习 Python。

在此输入图像描述

在此输入图像描述

python

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

如何在不命名或提供索引号的情况下引用pivot_longer() 中的最后一列?

我正在编写一个函数来将数据表转换为长格式。对于cols = 参数,第一列的名称将始终相同,但最后一列(和列数)将会更改。有没有办法在不命名列或不按索引的情况下获取列的“其余”部分?

假设我有这个样本数据:

data <- structure(list(Site = c("A", "B"), Group = c("1", "2"), grip = c("S", 
"H"), height = c("S", "T"), width = c("W", "N"), QA = c("Y", 
"N")), class = "data.frame", row.names = c(NA, -2L))
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

  Site Group grip height width QA
1    A     1    S      S     W  Y
2    B     2    H      T     N  N
Run Code Online (Sandbox Code Playgroud)

有时数据集会有更多列。假设我想获取 columns grip:QA,而不命名 QA,或给出其索引号。我尝试了以下方法:

data %>%
  pivot_longer(cols = grip:everything(),
               names_to = "Name",
               values_to = "value")

Run Code Online (Sandbox Code Playgroud)

但我收到了警告Warning message: In x:y …

r reshape dataframe data.table tidyr

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

无法在 CentOS 7 上下载存储库“pgdg-common”的元数据

当我尝试在CentOS Stream 8 上安装或更新软件包时,出现以下错误:

cd ~
sudo yum update
Run Code Online (Sandbox Code Playgroud)

输出:

PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64                                                           613  B/s | 659  B     00:01
PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64                                                           1.6 MB/s | 1.7 kB     00:00
PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64                                                           503  B/s | 659  B     00:01

Error: Failed to download metadata for repo 'pgdg-common': repomd.xml GPG signature verification error: Bad GPG signature
Run Code Online (Sandbox Code Playgroud)

我尝试在 CentOS 7 服务器上安装Docker …

linux centos stream

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