小编Gec*_*tar的帖子

对元组向量进行排序需要第二个值的引用吗?

我有一个整数元组的向量,并希望通过每个元组的第二个元素对其进行排序:

fn main() {
    let mut tuple_list2: Vec<(u16, u16)> = vec![(1, 5), (0, 17), (8, 2)];
    tuple_list2.sort_by(|a, b| a.1.cmp(b.1));
}
Run Code Online (Sandbox Code Playgroud)

编译器抛出错误,因为它b.1是a u16而不是对one(&u16)的引用.我可以通过引用b.1来解决这个问题:

fn main() {
    let mut tuple_list2: Vec<(u16, u16)> = vec![(1, 5), (0, 17), (8, 2)];
    tuple_list2.sort_by(|a, b| a.1.cmp(&b.1));
}
Run Code Online (Sandbox Code Playgroud)

我不明白我为什么要这样做.特别是因为我也不需要参考a.1.

sorting tuples reference vector rust

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

使用Java SE 8u25无法在Eclipse中解析某些javafx类

我从Oracle安装了Java SE 8u25 JDK(64位),其中应包括JavaFX.

我正在使用Win7 64位,Eclipse Helios并将jre包含在类路径中,如下所示: 在此输入图像描述

我正在尝试复制本教程中的代码:http: //docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm

Eclipse向我显示"类型javafx.scene.control.Control无法解析.它在尝试使用时间接引用所需的.class文件" javafx.scene.control.Button.setText(String).尝试创建StackPane对象时会出现类似的问题.

这是迄今为止的代码:

package javaFX;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.stage.Stage;

public class HelloWorld extends Application {

@Override
public void start(Stage primaryStage) throws Exception {

    Button btn = new Button();
    btn.setText("Hello world!");
    btn.setOnAction(new EventHandler<ActionEvent>(){

        @Override
        public void handle(ActionEvent arg0) {
            System.out.println("Hello world!");
        }

    });

    StackPane root = new StackPane();

}
}
Run Code Online (Sandbox Code Playgroud)

Tl; dr:Java SE 8u25中似乎缺少一些JavaFX类,或者我在构建路径中包含jre时犯了一个错误.

java eclipse javafx

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

Python 3中带numpy的Poisson Point Process,无秘

我需要在Python 3中编写一个函数,该函数返回根据均匀空间泊松过程分散的矩形字段(例如100x100点)上的位置(x,y)的数组。

到目前为止,我已经使用Python代码找到了该资源,但是不幸的是,我无法找到/安装适用于Python 3的scipy:

http://connor-johnson.com/2014/02/25/spatial-point-processes/

但是,它帮助我了解了泊松积分过程实际上是什么以及它如何工作。

我已经使用numpy.random.poisson已有一段时间了,但是我很难解释它的返回结果。

http://docs.scipy.org/doc/numpy/reference/generation/numpy.random.poisson.html

>>> import numpy as np
>>> np.random.poisson(1, (1, 5, 5))
array([[[0, 2, 0, 1, 0],
        [3, 2, 0, 2, 1],
        [0, 1, 3, 3, 2],
        [0, 1, 2, 0, 2],
        [1, 2, 1, 0, 3]]])
Run Code Online (Sandbox Code Playgroud)

我认为该命令的作用是创建一个5x5字段 =(1、5、5),并在该字段上以lambda = 1的速率分散对象。结果矩阵中显示的数字是物体位于该特定位置的概率。

我如何根据同一个空间泊松过程在5x5场上散射10个对象?我的第一个猜测是遍历整个数组,然后在每个位置上将一个对象插入一个“ 3”,然后在每个位置上将一个对象插入一个“ 2”,依此类推,但我不确定实际的概率应用于确定是否应插入对象。

根据以下资源,我可以通过简单地将速率和对象计数(10 * 1 = 10)相乘并将该值用作我的lambda来模拟以速率1散布在一个字段上的10个对象。

>>> np.random.poisson(10, (1, 5, 5))
array([[[12, 12, 10, 16, 16],
        [ 8,  6,  8, 12,  9],
        [12,  4, 10,  3, …
Run Code Online (Sandbox Code Playgroud)

python numpy spatial poisson

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

Python 3:在不迭代的情况下检查迭代器的下一个值

对于一个项目,如果下一行的某个列中的值等于当前行同一列中的值,我需要检入一个 csv 文件。我正在使用字典 csv 阅读器,即阅读器中的每一行都是一个字典文件。我可以通过使用列标题作为密钥访问特定行的一个值:row[header] = value

我当前代码的精简版本如下所示:

import csv

with open(os.path.abspath(path_to_file), "r") as f:
    reader = csv.DictReader(f, dialect='excel')

    for row in reader:
        current_row = row
        next_row = reader.__next__()
        if current_row[column] == next_row[column]:
            dosomething()
Run Code Online (Sandbox Code Playgroud)

这里的问题当然是我通过使用跳过了下一次迭代__next__(),即

(1)我进入循环;row = row1 (2) current_row = row1, next_row = row2 (3) 我进入循环的下一次迭代;row = row3 因为我使用了__next__(). current_row = row3, next_row = row4

在这个例子中,我永远不会检查row2 == row3.

是否可以在不迭代迭代器对象的情况下检查下一行的值?或者,是否有相反的方法__next__(),使迭代器后退一步?

请注意:我将当前值与下一个进行比较,而不是将当前值与最后一个值进行比较,因为我不知道我正在阅读的文件有多长。我必须将文件的最后一行与其他行区别对待,因此 …

python csv iterator for-loop python-3.x

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

选择要使用的实例方法

我写了一些代码,它接受一堆对象,在每个对象上使用一个实例方法,并将实例方法返回的值放在一个列表中。

object_list # list of objects
value_list = [object.method() for obj in object_list]
Run Code Online (Sandbox Code Playgroud)

我在代码的很多不同地方都需要这种结构,它们之间的唯一区别是实例方法method总是不同的。

如果方法是函数,那么使用这里解释映射方法是没有问题的。可以用 做类似的事情exec,但是它不是很优雅,而且我不确定它在返回值方面如何工作:

def call_method(obj, method_name: str):
    return exec("obj." + method_name + "()")  # returns None
Run Code Online (Sandbox Code Playgroud)

有没有一种优雅的方法来重构这个问题的代码?

python refactoring instance-methods python-3.x

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

Converting an int type to a uint8

The Nim Tutorial page states:

Lossless Automatic type conversion is performed in expressions where different kinds of integer types are used.

So, I thought that creating an int in the range of a uint8 would allow me to pass it to procs expecingt an uint8.

However, the following code raises the annotated errors:

import random

proc show(x: uint8) {.discardable.} = echo x

let a: int = 255
show(a)  # type mismatch: got (int) but expected one of proc …
Run Code Online (Sandbox Code Playgroud)

nim-lang

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