什么是列表方法之间的差异append()和extend()?
有什么区别:
some_list1 = []
some_list1.append("something")
Run Code Online (Sandbox Code Playgroud)
和
some_list2 = []
some_list2 += ["something"]
Run Code Online (Sandbox Code Playgroud) 所以我有这个代码:
tup = ([1,2,3],[7,8,9])
tup[0] += (4,5,6)
Run Code Online (Sandbox Code Playgroud)
这会产生此错误:
TypeError: 'tuple' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
虽然这段代码:
tup = ([1,2,3],[7,8,9])
try:
tup[0] += (4,5,6)
except TypeError:
print tup
Run Code Online (Sandbox Code Playgroud)
打印这个:
([1, 2, 3, 4, 5, 6], [7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
这种行为有望吗?
我意识到这不是一个非常常见的用例.但是,虽然预计会出现错误,但我没想到列表会发生变化.
如果我要运行此代码:
def function(y):
y.append('yes')
return y
example = list()
function(example)
print(example)
Run Code Online (Sandbox Code Playgroud)
为什么它会返回['yes'],即使我没有直接更改变量'example',我怎么能修改代码以便'example'不受函数的影响?
Python中列表操作的"+"和"append"之间的实际区别是什么?
我不知道f()和之间有什么区别g().
在函数中f,只要调用函数,就会累积列表L.
但在功能上g,它不..
def f(a, L=[]):
L.append([2]);
print(L);
def g(a, L=[]):
L = L+[2];
print(L);
print("f:")
f(1) # [[2]]
f(2) # [[2], [2]]
f(3) # [[2], [2], [2]]
print("g:")
g(1) # [2]
g(2) # [2]
g(3) # [2]
Run Code Online (Sandbox Code Playgroud) >>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 43955984
>>> c += c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 43955984
>>> del c
>>> c = [1, 2, 3]
>>> print(c, id(c))
[1, 2, 3] 44023976
>>> c = c + c
>>> print(c, id(c))
[1, 2, 3, 1, 2, 3] 26564048
Run Code Online (Sandbox Code Playgroud)
有什么不同?是+ =和+不应该仅仅是语法糖?
这里有几个列表:a,b等我想分别对它们进行一些更改,但我对for循环的行为感到困惑.
例如:如果我们这样做
a, b = range(5), range(5,10)
for x in [a, b]: x += [0]
print(a,b)
Run Code Online (Sandbox Code Playgroud)
我们得到
([0, 1, 2, 3, 4, 0], [5, 6, 7, 8, 9, 0])
Run Code Online (Sandbox Code Playgroud)
a,b被修改.
但如果我们这样做
a, b = range(5), range(5,10)
for x in [a, b]: x = x + [0]
print(a,b)
Run Code Online (Sandbox Code Playgroud)
我们得到
([0, 1, 2, 3, 4], [5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
a,b未被修改.我很困惑,x和a之间的关系是什么?我何时或如何修改a的值?顺便说一句,a + = b和a = a + b之间有什么区别?
无论如何,我找到了一个我们可以这样做的解决方案
a, b = range(5), range(5,10)
lis = [a, b]
for i, x in …Run Code Online (Sandbox Code Playgroud) Python列表有一个+=运营商以及append和extend方法.
如果l是一个列表,是l += ...相当于l.append(...),l.extend(...),两者或两者都不是?
L = [1,2,3,4]
L.append(13) # (1)
L = L + [13] # (2)
Run Code Online (Sandbox Code Playgroud)
上述陈述有何不同?
在Python中有两种方法将列表合并在一起:
['a', 'b', 'c'] + ['x', 'y', 'z']
['a', 'b', 'c'].extend(['x', 'y', 'z'])
两种方法有什么区别?
连接超过2个列表的Pythonic方式是什么?
['a', 'b', 'c'] + [1, 2, 3] + ['x', 'y', 'z']
Run Code Online (Sandbox Code Playgroud)
gucci_list = ['a', 'b', 'c']
gucci_list.extend([1, 2, 3])
gucci_list.extend(['x', 'y', 'z'])
Run Code Online (Sandbox Code Playgroud)
结合两者怎么样?
['a', 'b', 'c'].extend([1, 2, 3] + ['x', 'y', 'z'])
Run Code Online (Sandbox Code Playgroud)