为什么python列表会这样做?
我想用python复制一个列表,同时删除一个元素:为什么python列表会这样做?,python,list,Python,List,我想用python复制一个列表,同时删除一个元素: x = [1,2,3] a = list(x).remove(2) 虽然x仍然是[1,2,3],但a是None,而不是我预期的[1,3] 如果我将第2行分为两行,则会得到预期的行为: x = [1,2,3] a = list(x) a.remove(2) a现在是[1,3],x未修改 这是为什么?.remove()方法修改列表本身,但不返回修改后的列表。例如: x = [1, 2, 3] x.remove(2) print x 结果: [
x = [1,2,3]
a = list(x).remove(2)
虽然x
仍然是[1,2,3]
,但a
是None
,而不是我预期的[1,3]
如果我将第2行分为两行,则会得到预期的行为:
x = [1,2,3]
a = list(x)
a.remove(2)
a
现在是[1,3]
,x未修改
这是为什么?.remove()
方法修改列表本身,但不返回修改后的列表。例如:
x = [1, 2, 3]
x.remove(2)
print x
结果:
[1, 3]
通常,请就地修改列表。有些方法(如.sort()
的sorted
)的内置函数返回修改过的列表,但的内置函数没有。remove()
.remove()
方法修改列表本身,但不返回修改过的列表。例如:
x = [1, 2, 3]
x.remove(2)
print x
结果:
[1, 3]
通常,请就地修改列表。有些方法(如
的sorted
.sort()
)的内置函数返回修改后的列表,但没有。remove()
如果确实需要复制列表,有几个选项,但我更喜欢:
x = [1, 2, 3]
y = x[:]
x.remove(2)
print x, y
这张照片是:
[1, 3] [1, 2, 3]
如果您确实需要复制列表,有几个选项,但我更喜欢:
x = [1, 2, 3]
y = x[:]
x.remove(2)
print x, y
这张照片是:
[1, 3] [1, 2, 3]
通常,
x=obj.method1().method2()
将在obj
上调用method1
,并在obj.method1()的返回值上调用method2
。而method2
的返回值将是分配给变量x
@poke Yeah的值,该变量在常规x=obj.method1()。method2()
将调用obj
上的method1
和obj.method1()的返回值上的method2
。method2
的返回值将是分配给变量x
@poke-Yeah的值,这很有意义为什么您更喜欢这样?这里有一个链接,指向如何克隆列表的问题。在上面的答案中列出的所有选项中,我觉得y=x[:]切片是最简单的(虽然不一定是直观的复制)。你为什么喜欢这样做?这里有一个链接,指向一个问题,询问如何克隆列表。在上面的答案中列出的所有选项中,我觉得切片,y=x[:],是最简单的(虽然不一定是直观的,你会制作一个副本)。