标签: variable-assignment

当您不知道序列长度时,在Python中进行多次解包分配

多个解包分配的教科书示例如下:

import numpy as NP
M = NP.arange(5)
a, b, c, d, e = M
# so of course, a = 0, b = 1, etc.

M = NP.arange(20).reshape(5, 4)     # numpy 5x4 array
a, b, c, d, e = M
# here, a = M[0,:], b = M[1,:], etc. (ie, a single row of M is assigned each to a through e)
Run Code Online (Sandbox Code Playgroud)

(我的问题不numpy具体.事实上,我更喜欢纯Python解决方案.)

对于我现在正在看的那段代码,我看到了这个直接场景的两个复杂问题:

  • 我通常不会知道M的形状; 和

  • 我想解压一定数量的物品(绝对比所有项目更少),我想把其余为单一 容器

回到上面的5x4数组,我非常想做的是分别将前三行M分配给a,b和c(完全如上),其余行(我不知道如何)很多东西,只有一些正整数)到一个容器,all_the_rest = [].

python variable-assignment

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

javascript逻辑分配如何工作?

在javascript中,如果我们有一些代码,如

var a = "one";
var b = q || a;
alert (b);
Run Code Online (Sandbox Code Playgroud)

逻辑OR运算符将为b分配值,并且警报将为"1".

这仅限于作业还是我们可以在任何地方使用它?

似乎空字符串的处理方式与undefined相同.这是正确的吗?

这如何与AND变量一起使用?它们的组合怎么样?

什么时候使用这些成语,或何时不使用?

javascript variable-assignment logical-operators

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

Java - 操作顺序 - 在单行中使用两个赋值运算符

在一行中使用两个赋值运算符时的操作顺序是什么?

public static void main(String[] args){
    int i = 0;
    int[] a = {3, 6};
    a[i] = i = 9; // this line in particular
    System.out.println(i + " " + a[0] + " " + a[1]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的帖子.我得到了=从右边获取值,但是当我编译它时,我得到:

9 9 6
Run Code Online (Sandbox Code Playgroud)

我认为它本来是和ArrayOutOfBounds异常,但它它移动到9 之前分配'a [i]' 它是否只是为数组做那个?

java arrays operations operators variable-assignment

13
推荐指数
2
解决办法
3166
查看次数

来自另一个数据帧的pandas multiindex赋值

我试图了解pandas MultiIndex DataFrames以及如何为它们分配数据.具体来说,我有兴趣分配与另一个较小数据帧匹配的整个块.

ix = pd.MultiIndex.from_product([['A', 'B'], ['a', 'b', 'c', 'd']])
df = pd.DataFrame(index=ix, columns=['1st', '2nd', '3rd'], dtype=np.float64)
df_ = pd.DataFrame(index=['a', 'b', 'c', 'd'], columns=['1st', '2nd', '3rd'], data=np.random.rand(4, 3))
df_

    1st     2nd     3rd
a   0.730251    0.468134    0.876926
b   0.104990    0.082461    0.129083
c   0.993608    0.117799    0.341811
d   0.784950    0.840145    0.016777
Run Code Online (Sandbox Code Playgroud)

df是相同的,除了所有的值都有,NaN并且有两个块AB.现在,如果我想分配值df_,df我想我可以做类似的事情

df.loc['A',:] = df_                # Runs, does not work
df.loc[('A','a'):('A','d')] = df_  # AssertionError (??) 'Start slice bound …
Run Code Online (Sandbox Code Playgroud)

python variable-assignment multi-index pandas

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

ES6结构分配?

ES6的新解构分配功能现在已经众所周知(Babel的REPL上的实时副本); 在存在的变量的情况下:

let a, b;                 // Existing variables
let o = {a: "a", b: "b"}; // An object to get values from
// ...
({a, b} = o);             // Set them to the props from `o`
console.log(a);           // "a"
console.log(b);           // "b"
Run Code Online (Sandbox Code Playgroud)

ES6中是否有简单的说法?基于具有相同名称的变量设置现有对象的属性?(除了显而易见的o.a = a; o.b = b;)

注意我不是在讨论创建对象时,我们可以使用美妙的新对象初始化器语法来实现这一点,这样我们就不会不必要地重复这些名称:

let a = "a";
let b = "b";
let o = {a, b};
Run Code Online (Sandbox Code Playgroud)

但是如果我已经有了一个对象,我可以在ES6中进行某种结构分配吗?

javascript destructuring variable-assignment ecmascript-6

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

R:使用空方括号轻松分配?X [] < -

在查看最近在SO上发布的答案时,我注意到了一个不熟悉的任务说明.而不是通常的形式 myVar<- myValue,它使用了myVar[]<- myValue.就个人而言,我从未见过这样的作业,但它有一个非常有用的效果 - 它将指定的数据myValue重新塑造为myVar的形状.

我想在我的代码中使用它.然而,文档"<-"似乎是沉默的.

这是一个完善的功能,可以依靠它在所有情况下工作吗?

另外,我的猜测是它可能是函数调用堆栈的副作用,即调用<-[按顺序,但我无法弄清楚如何.有人可以对此有所了解吗?

这是一个例子 -

# A dataframe
df1<- data.frame(a=1:4, b=11:14)

# simple assignment assigns to class of RHS
df1<- c(21:24,31:34)
df1 
#[1] 21 22 23 24 31 32 33 34
class(df1)
#[1] "integer"

#assignment with [] casts to class of LHS 
df1<- data.frame(a=1:4, b=11:14)
df1[]<- c(21:24,31:34)
df1

#    a  b
# 1 21 31
# 2 22 32
# 3 23 33
# 4 …
Run Code Online (Sandbox Code Playgroud)

syntax casting r variable-assignment reshape

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

while(i!= i){} - 是否可能有一个始终为真的赋值

最近我接受了一家软件公司的采访,在技术能力回合中询问了以下问题:

以这样的方式声明我,条件总是为真:

while(i != i) {
}
Run Code Online (Sandbox Code Playgroud)

在Java中技术上是否可以分配这种东西?

java variables variable-assignment while-loop

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

运算符 += 在 Python 中返回什么

原始问题

当我试图在 stackoverflow 上回答另一个人关于Python=+=Python之间的区别的问题时,我遇到了以下问题:

class Foo:
    def __init__(self, value, name="default"):
        self.value = value
        self.name = name
        
    def __add__(self, that):
        return Foo(self.value + that.value)
    
    def __iadd__(self, that):
        self.value = self.value + that.value
        return self
    
    def __str__(self):
        return "name: {}, value: {:d}".format(self.name, self.value)
    
a = Foo(1, 'alice')
b = Foo(2, 'bob')
print(a+=b)
Run Code Online (Sandbox Code Playgroud)

最后一个print电话没有成功,给了我这个:

File "<ipython-input-8-0faa82ba9e4a>", line 3
    print(a+=b)
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这不起作用。也许它与关键字参数传递机制有关?我只是找不到关于这个主题的任何资源,因为重载的__iadd__方法已经返回了一个Foo对象。

************** 更新 ******************

如果我__iadd__像这样更改方法(只需删除return语句):

... …
Run Code Online (Sandbox Code Playgroud)

python variable-assignment

13
推荐指数
2
解决办法
2518
查看次数

使用Javascript中的赋值运算符将一个对象设置为等于另一个对象

我来自C背景的javascript.在javascript中,当我使用赋值运算符将一个对象分配给另一个对象时,它是将值从一个复制到另一个,还是现在它们都指向相同的数据?或者,赋值运算符在这种情况下做了什么?

function point_type()
 {
 this.x = 0;
 this.y = 0;
 }

var pnt1 = new point_type();
var pnt2 = new point_type();

pnt1.x = 4;
pnt1.y = 5;

pnt2 = pnt1;

pnt1.x = 8;
pnt2.y = 9;
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,pnt2.x现在是否等于8,还是等于4,还是等于0?

是的,我意识到我可以自己测试一下,我会在等待社区提出答案时这样做.但是,我希望我的问题的答案只会回过头来回答这个例子,并且可能会对javascript对象的工作方式和一些最佳实践有所启发.

跟进问题:
答案似乎是复制了引用.pnt2和pnt1现在指向相同的数据.是否可以设置我的对象以便复制值?这通常是如何在javascript中完成的?显然,我不希望每次需要复制此对象时单独设置每个属性.

javascript object variable-assignment

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

使用R1:= R2的记录的深层副本,或者是否有良好的方法来实现带记录的NxM矩阵?

我正在实现一个带有记录和内部动态数组的N x M矩阵(类),如下所示.

TMat = record
public     
  // contents
  _Elem: array of array of Double;

  //
  procedure SetSize(Row, Col: Integer);

  procedure Add(const M: TMat);
  procedure Subtract(const M: TMat);
  function Multiply(const M: TMat): TMat;
  //..
  class operator Add(A, B: TMat): TMat;
  class operator Subtract(A, B: TMat): TMat;
  //..
  class operator Implicit(A: TMat): TMat; // call assign inside proc.
                                          // <--Self Implicit(which isn't be used in D2007, got compilation error in DelphiXE)

  procedure Assign(const M: TMat); // copy _Elem inside proc.
                                   // …
Run Code Online (Sandbox Code Playgroud)

delphi record matrix deep-copy variable-assignment

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