相关疑难解决方法(0)

为什么+ =在列表上出现意外行为?

+=python中的运算符似乎在列表上意外运行.谁能告诉我这里发生了什么?

class foo:  
     bar = []
     def __init__(self,x):
         self.bar += [x]


class foo2:
     bar = []
     def __init__(self,x):
          self.bar = self.bar + [x]

f = foo(1)
g = foo(2)
print f.bar
print g.bar 

f.bar += [3]
print f.bar
print g.bar

f.bar = f.bar + [4]
print f.bar
print g.bar

f = foo2(1)
g = foo2(2)
print f.bar 
print g.bar 
Run Code Online (Sandbox Code Playgroud)

OUTPUT

[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2] …
Run Code Online (Sandbox Code Playgroud)

python augmented-assignment

103
推荐指数
6
解决办法
6万
查看次数

Python在列表上追加()与+运算符,为什么这些会给出不同的结果?

为什么这两个操作(append()分别+)给出不同的结果?

>>> c = [1, 2, 3]
>>> c
[1, 2, 3]
>>> c += c
>>> c
[1, 2, 3, 1, 2, 3]
>>> c = [1, 2, 3]
>>> c.append(c)
>>> c
[1, 2, 3, [...]]
>>> 
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,实际上存在无限递归.c[-1]并且c是一样的.为什么它与+操作不同?

python list append nested-lists

100
推荐指数
5
解决办法
9万
查看次数

Python就地操作符函数与标准操作符函数有何不同?

为什么不operator.iadd(x, y)等同z = x; z += y那有什么operator.iadd(x, y)不同operator.add(x, y)

来自文档:

许多操作都有"就地"版本.与通常的语法相比,以下函数提供了对原位运算符的更原始的访问; 例如,语句x + = y等于x = operator.iadd(x,y).另一种说法是说z = operator.iadd(x,y)相当于复合语句z = x; z + = y.

相关问题,但我对Python类方法不感兴趣; 只是内置Python类型的常规运算符.

python function operator-keyword

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

使用+和+ =在python中添加列表之间的区别

我注意到在尝试p= p+i不同的列表时, p += i 例如:

test = [0, 1, 2, 3,]
p = test
test1 = [8]
p = p + test1
print test
Run Code Online (Sandbox Code Playgroud)

在上面的代码中test打印出原始值[0, 1, 2, 3,]

但是如果我在下面p = p + test1p += test1As 切换

test = [0, 1, 2, 3,]
p = test
test1 = [8]

p += test1

print test
Run Code Online (Sandbox Code Playgroud)

test 现在等于 [0, 1, 2, 3, 8]

价值不同的原因是什么?

python list

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

x += y 和 x = x + y 之间的执行时间差

我试图将我的解决方案提交给 leetcode 问题,其中xy是列表和使用

x = x + y
Run Code Online (Sandbox Code Playgroud)

给我一个时间超过限制 而使用

x += y
Run Code Online (Sandbox Code Playgroud)

通过了测试用例并给了我AC

两者之间的执行时间差异以及两者执行方式的差异是多少?

python list python-3.x

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