Moc*_*ock 2 python list python-2.x
我有一些基本的代码,我没有抓住以下行为:
L = [ 'a', 'bb', 'ccc' ]
L.append(range(2))
print len(L)
print len(L + range(1))
print len(L)
Run Code Online (Sandbox Code Playgroud)
其输出是
4
5
4
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑,因为我的思维过程是初始列表的长度是3,并且追加range(2)到末尾会使它达到5的长度.因此我期望输出为5 6 5.我确定这是一个简单的怪癖,但我有点失落,并且有一段时间试图在网上找到答案.有人能指出我正确的方向吗?
Mar*_*ers 10
您附加了一个列表对象.您没有添加的元素从该列表range产生到L.嵌套列表对象只添加一个元素:
>>> L = ['a', 'bb', 'ccc']
>>> L.append(range(2))
>>> L
['a', 'bb', 'ccc', [0, 1]]
Run Code Online (Sandbox Code Playgroud)
注意[0, 1],range()函数的输出.
你正在寻找list.extend():
>>> L = ['a', 'bb', 'ccc']
>>> L.extend(range(2))
>>> L
['a', 'bb', 'ccc', 0, 1]
>>> len(L)
5
Run Code Online (Sandbox Code Playgroud)
作为替代方案list.extend(),在大多数情况下,您也可以使用+=扩充分配(但考虑到更新的L列表被分配回来L,这可能会导致L类属性时出现意外):
>>> L = ['a', 'bb', 'ccc']
>>> L += range(2)
>>> L
['a', 'bb', 'ccc', 0, 1]
Run Code Online (Sandbox Code Playgroud)