我有一些我没有掌握的基本代码:
L = [ 'a', 'bb', 'ccc' ]
L.append(range(2))
print len(L)
print len(L + range(1))
print len(L)
其输出为
4
5
4
这让我感到困惑,因为我的思考过程是初始列表的长度为 3,然后将 range(2)
附加到末尾使其长度为 5。因此我' d 期望输出为 5 6 5
。我敢肯定这是一个简单的怪癖,但我有点迷路,并且有一段时间试图在网上找到答案。谁能给我指出正确的方向?
最佳答案
您附加了一个列表对象。您没有将 range
生成的列表中的元素添加到 L
。嵌套列表对象仅添加一个元素:
>>> L = ['a', 'bb', 'ccc']
>>> L.append(range(2))
>>> L
['a', 'bb', 'ccc', [0, 1]]
注意 [0, 1]
,range()
函数的输出。
你正在寻找 list.extend()
而不是:
>>> L = ['a', 'bb', 'ccc']
>>> L.extend(range(2))
>>> L
['a', 'bb', 'ccc', 0, 1]
>>> len(L)
5
作为 list.extend()
的替代方案,在大多数情况下您也可以使用 +=
扩充赋值(但要考虑更新的 L
列表被分配回 L
,它可以 lead to surprises when L
was a class attribute ):
>>> L = ['a', 'bb', 'ccc']
>>> L += range(2)
>>> L
['a', 'bb', 'ccc', 0, 1]
关于python - 将范围附加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437608/