将范围附加到lis

2024-05-16 20:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些基本的守则,我没有掌握的行为:

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。因此,我希望输出是5 6 5。我相信这是一个简单的怪癖,但我有点迷茫,有一个地狱般的时间试图在网上找到答案。有人能指点我正确的方向吗?


Tags: 答案列表len过程时间rangeprintccc
1条回答
网友
1楼 · 发布于 2024-05-16 20:15:01

您附加了一个列表对象。您没有将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 ^{} was a class attribute):

>>> L = ['a', 'bb', 'ccc']
>>> L += range(2)
>>> L
['a', 'bb', 'ccc', 0, 1]

相关问题 更多 >