可能重复:
R中的赋值运算符:'='和'< - '
我正在使用R 2.8.1并且可以使用它们=和<-作为变量赋值运算符.他们之间有什么区别?我应该使用哪一个?
如何在PHP中为多个变量分配相同的值?
我有类似的东西:
$var_a = 'A';
$var_b = 'A';
$same_var = 'A';
$var_d = 'A';
$some_var ='A';
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我不能将所有变量重命名为具有相同的名称(这会使事情变得更容易),那么有没有办法以更紧凑的方式为所有变量分配相同的值?
我有一个简单的程序:
public class Mathz {
static int i = 1;
public static void main(String[] args) {
while (true){
i = i + i;
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序,我看到的是0对i我的输出.我原本预计会有第一次i = 1 + 1,然后是i = 2 + 2,然后是i = 4 + 4等等.
这是因为我们一旦尝试i在左侧重新声明,它的值会重置为0?
如果有人能指出我更精细的细节,这将是伟大的.
更改int为long,似乎是按预期打印数字.我惊讶于它达到最大32位值的速度有多快!
我有一个对象列表,我想删除所有空的对象,除了一个,使用filter和lambda表达式.
例如,如果输入是:
[Object(name=""), Object(name="fake_name"), Object(name="")]
Run Code Online (Sandbox Code Playgroud)
...那么输出应该是:
[Object(name=""), Object(name="fake_name")]
Run Code Online (Sandbox Code Playgroud)
有没有办法为lambda表达式添加赋值?例如:
flag = True
input = [Object(name=""), Object(name="fake_name"), Object(name="")]
output = filter(
(lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]),
input
)
Run Code Online (Sandbox Code Playgroud) 我最近应用这个解决方案来平均每N行矩阵.虽然解决方案通常起作用,但在应用于7x1阵列时遇到了问题.我注意到问题是在使用-=运算符时.举一个小例子:
import numpy as np
a = np.array([1,2,3])
b = np.copy(a)
a[1:] -= a[:-1]
b[1:] = b[1:] - b[:-1]
print a
print b
Run Code Online (Sandbox Code Playgroud)
哪个输出:
[1 1 2]
[1 1 1]
Run Code Online (Sandbox Code Playgroud)
因此,在数组的情况下a -= b产生不同的结果a = a - b.直到现在我才想到这两种方式完全相同.有什么不同?
为什么我提到的用于求和矩阵中每N行的方法是如何工作的,例如7x4矩阵而不是7x1阵列?
我理解不支持成员分配数组,因此以下方法不起作用:
int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"
Run Code Online (Sandbox Code Playgroud)
我只是接受了这个事实,认为该语言的目的是提供一个开放式框架,并让用户决定如何实现诸如复制数组之类的东西.
但是,以下工作正常:
struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;
Run Code Online (Sandbox Code Playgroud)
该数组num[3]是从其实例中成员分配struct1到其实例中的struct2.
为什么结构支持成员方式的数组,但一般情况下不支持?
编辑:Roger Pate 在结构中的线程std :: string中的注释- 复制/赋值问题?似乎指向答案的大致方向,但我不知道自己确认.
编辑2:许多出色的回应.我之所以选择Luther Blissett,是因为我对这种行为背后的哲学或历史原理很感兴趣,但James McNellis对相关规范文档的引用也很有用.
自复制构造函数
MyClass(const MyClass&);
Run Code Online (Sandbox Code Playgroud)
和=运算符重载
MyClass& operator = (const MyClass&);
Run Code Online (Sandbox Code Playgroud)
有几乎相同的代码,相同的参数,只有不同的返回,是否有可能有一个共同的功能,他们都使用?
我想在R中的一行中分配多个变量.是否可以这样做?
values # initialize some vector of values
(a, b) = values[c(2,4)] # assign a and b to values at 2 and 4 indices of 'values'
Run Code Online (Sandbox Code Playgroud)
通常我想在一行中分配大约5-6个变量,而不是多行.还有其他选择吗?
var a,b,c;
var arr = [1,2,3];
[a,b,c] = arr;
Run Code Online (Sandbox Code Playgroud)
此代码在Firefox中完美运行,导致a = 1,b = 2和c = 3,
但它在Chrome中不起作用.它是Chrome错误还是
无效的javascript代码?(我没能在javascript参考中找到它)
如何修改此代码以使其适用于Chrome,对其造成的损害最小?
(我真的不想写a = arr [0]; b = arr [1] ...或者一直使用arr.shift()
PS这只是一个示例代码,在实际代码中
我从代码之外的某处获取arr数组
这更像是一个概念性问题.我最近在Python中看到了一段代码(它在2.7中工作,也可能在2.5中运行),其中一个for循环对迭代的列表和列表中的项使用相同的名称,这既是一种糟糕的做法,也是一种根本不起作用的东西.
例如:
x = [1,2,3,4,5]
for x in x:
print x
print x
Run Code Online (Sandbox Code Playgroud)
产量:
1
2
3
4
5
5
Run Code Online (Sandbox Code Playgroud)
现在,我觉得打印的最后一个值是从循环中分配给x的最后一个值,但是我不明白为什么你能够为for循环的两个部分使用相同的变量名并且它按预期运作.它们在不同的范围内吗?引擎盖下发生了什么让这样的事情发挥作用?