小编Max*_*Wen的帖子

列表理解中的列表理解 - 范围

我试图在一行中的Python字典中创建一个完整的图形.但是当创建值的列表理解时,我无法弄清楚如何指定key_value不能出现在值列表中(在图中说,没有自循环).

对于n个节点

G = {k:[v for v in range(n)] for k in range(n) }
Run Code Online (Sandbox Code Playgroud)

结果如此(例子n = 3)

{0: [0, 1, 2], 1: [0, 1, 2], 2: [0, 1, 2]}
Run Code Online (Sandbox Code Playgroud)

但我想要的是这个

{0: [1, 2], 1: [0, 2], 2: [0, 1]}
Run Code Online (Sandbox Code Playgroud)

但尝试类似的东西

G = {k:[v for v in range(n) for v !=k] for k in range(n) }
Run Code Online (Sandbox Code Playgroud)

将在列表理解中的k处抛出错误.所以k必须超出列表理解的范围,这是有道理的.

可以用这种方法定义G吗?

python algorithm dictionary list-comprehension list

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

Scala工作表无法解析类名 - IntelliJ IDEA

我跟着讲座,讲师正在使用Eclipse,但我正在使用IntelliJ IDEA Community Edition 15.0.6,而名为rationals.scala的Scala工作表上的代码如下

object rationals{
  val x = new Rational(1,2)
  x.numer
  x.denom
}

//noinspection ScalaPackageName
class Rational(x: Int, y: Int) {
  def numer = x
  def denom = y
}
Run Code Online (Sandbox Code Playgroud)

Scala工作表工作表将不会计算,并且存在与读取的类定义关联的警告(而不是错误)

包名称与目录结构不对应,这可能会导致解析此文件中的类时出现问题

此外,这是奇怪的,但可能很重要,IDEA标志着numer和denom作为拼写错误.

任何指导?谢谢

scala intellij-idea sbt intellij-scala

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

sbt 已安装但未找到

Fedora 25. sbt 已安装,我一直在使用它,可能上次是一周前。但是今天没有找到。

$ sbt
bash: sbt: command not found...
Install package 'sbt' to provide command 'sbt'? [N/y]
Run Code Online (Sandbox Code Playgroud)

尝试重新安装,但 dnf 知道我在做什么

$ sudo dnf install sbt
[sudo] password for xxx: 
Last metadata expiration check: 0:31:12 ago on Thu Apr 27 19:39:34 2017.
Package sbt-0.13.15.2-2.noarch is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
Run Code Online (Sandbox Code Playgroud)

检查安装位置,但没有运气

$ which sbt
/usr/bin/which: no sbt in (/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/xxx/.local/bin:/home/xxx/bin)
Run Code Online (Sandbox Code Playgroud)

我猜问题出在我的 $PATH 中,但是我没有改变它,尽管我已经安装了一些软件包

$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/xxx/.local/bin:/home/xxx/bin
Run Code Online (Sandbox Code Playgroud)

最后,我确实在 /usr/share/sbt/bin/ 中找到了一个名为 sbt-launch.jar 的 jar,但我认为 /usr/share 从来没有成为我的 $PATH …

scala path sbt dnf

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

在 Fedora Linux 上的 Jupyter 中运行 Python 2 和 3

我昨天重新安装了 Fedora 23。我按照https://jupyter.readthedocs.org/en/latest/install.html 上的说明安装了 Jupyter,这意味着我这样做了

pip install jupyter
Run Code Online (Sandbox Code Playgroud)

Python 2 似乎运行起来很有趣。我尝试按照此处的说明添加对 Python 3 内核的支持在 IPython Notebook 中使用 Python 2.x 和 Python 3.x,这意味着我遵循了这些说明http://jupyter。 cs.brynmawr.edu/hub/dblank/public/Jupyter%20Help.ipynb#1.4.2-Enable-Python-3-kernel

我重新启动了服务器,打开了一个新的 Python 3 notebook,然后看着内核在 3 秒后死亡。

对我来说很明显,没有使用 Anaconda 在 Linux 上的 Jupyter 中运行 2 和 3 的文档很少。我们能否让它成为以 Fedora Linux 为中心的,没有 Anaconda 线程?

Fedora 23,Python 2.7.10 / 3.4.3

谢谢

python linux fedora jupyter jupyter-notebook

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

R中的库(.)命令的返回值

在R中,当你想加载一个库时,例如调用一个foo,命令是

library(foo)
Run Code Online (Sandbox Code Playgroud)

此呼叫是否有返回值表示成功/失败?我想使用如下

if library(foo) != 1:
    install.packages("foo")
Run Code Online (Sandbox Code Playgroud)

谢谢

r

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

在 Fedora 25 中设置 PATH 和 JAVA_HOME

请原谅这个似乎是之前回答过的问题,但如果我阅读 10 篇不同的帖子,我会发现 20 种不同的答案。

我刚刚安装了 Fedora 25。我要学习 Java 开发,需要设置我的环境。我将使用 openjdk 并安装了 java-1.8.0-openjdk-devel。我还将使用 Maven。

现在我需要设置我的$PATH$JAVA_HOME变量。

我尝试了在这里找到的答案(Fedora OpenJDK Set JAVA_HOME

但添加到我的 .bashrc 之后

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
Run Code Online (Sandbox Code Playgroud)

然后测试,我得到了在我看来是错误的答案,因为我认为末尾不应该有 /jre/

> echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b14.fc25.x86_64/jre/
Run Code Online (Sandbox Code Playgroud)

请问我应该将 JAVA_HOME 设置为多少,这样我就不需要在每次 openjdk 更新时都更新它?

之后我认为 PATH 只是

export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

这看起来是一件很简单的事情,但在我看来却有很多困惑。谢谢

PS 另外,.bashrc 是正确的位置吗?因为我在这里看到(https://askubuntu.com/questions/175514/how-to-set-java-home-for-java)/etc/environment会更合适)谢谢

java maven fedora-25

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

在 C++ 中,过滤多态派生类向量的正确方法是什么?

这是一个编译和运行的明显简单的示例。

#include <iostream>
#include <vector>

using namespace std;

class Shape {
    public:
    virtual double getArea() = 0;
};

class Circle : public Shape {
    public:
    double getArea() {return 3.14;}
};

class Rectangle : public Shape {
    public:
    double getArea() {return 42.0;}
};

int main() {

    vector<Shape*> shapes = {new Circle(), new Rectangle()};

    for (Shape* s : shapes) { cout << s->getArea() << endl;}

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

结果是它将打印向量中的每个形状。

我不知道该怎么做是按派生类类型过滤向量。例如,如何迭代向量并只对每个 Circle 执行某些操作?

谢谢

c++

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

R - 为什么我的 ColorBrewer 调色板错误

我正在 R 中做一个简单的散点图,当我尝试使用 colorbrewer 调色板“RdBu”时,我得到了明显不同的东西,但我不知道为什么。

这是我的数据摘要

> summary(d$Year)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1880    1914    1947    1947    1980    2014 

> summary(d$NHem)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-52.000 -21.500  -2.000   3.326  16.000  91.000 

> summary(d$NHem.bin)
-3 -2 -1  0  1  2  3  4  5 
 1 23 28 37 22  4  8 11  1 
Run Code Online (Sandbox Code Playgroud)

当我使用命令时

ggplot(d, aes(x=Year, y=NHem, colour=NHem.bin)) + geom_point() + scale_fill_brewer(palette = "RdBu") 
Run Code Online (Sandbox Code Playgroud)

我明白了

在此输入图像描述

所以这显然不是“RdBu”。我究竟做错了什么??

另外,我正在创建一个 bin var,以便我可以尝试在 3 个独立的图中保持相同的梯度。

既然我已经在这里了,我如何反转比例,使蓝色端对应于更多的负数,红色端对应于更多的正数?

谢谢

r ggplot2 colorbrewer

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