python - 将范围附加到列表

标签 python list python-2.x

我有一些我没有掌握的基本代码:

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/

相关文章:

python - 仅当它们具有匹配值时,如何添加作为列表的键值?

python - 子进程或导入以在 Python 中调用脚本

python - 为什么 '' > 0 在 Python 2 中为真?

python - 我设置了 True=False 并且我无法撤消它

python - Bs4 编码问题 - Python

python - 如何打开文件并找到最长的一行然后打印出来

python - 如何比较两个 CSV 文件并找出差异?

python - 在数组 Python 中存储多个值

java - iterator.hasNext() 返回错误值

java - 解析数组并提取相同长度的字符串