将范围附加到列表

时间:2017-02-24 11:34:19

标签: 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.因此我期望输出是5 6 5。我确定这是一个简单的怪癖,但我有点失落,并且有一段时间试图在网上找到答案。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:8)

您附加了一个列表对象。您没有将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]

答案 1 :(得分:0)

在任何地方插入项目范围或列表

 g=[1,2,3,4,7,8]        
    z=[5,6]
    def insertRange(start,YourList,anotherlist):
        if isinstance(YourList,list) and isinstance(anotherlist,list) :
            YourlistPart1=YourList[0:start]
            YourlistPart2=YourList[start:]
            YourlistPart1.extend(anotherlist)
            YourlistPart1.extend(YourlistPart2)
            print(YourlistPart1)
    
    insertRange(4,g,z)

您不能在python中的特定位置插入范围,但您可以使用extend通过函数解决您可以拆分列表扩展第一部分然后再次合并2个列表如果您愿意,start=不会从0开始从索引 3 开始插入,在您以 3 开始的示例中 = 4

总结

start from 1 添加索引 0 之后的列表并移动其他元素

start from 4 在索引 3 之后添加列表并移动其他元素

start from 5 添加索引 4 之后的列表

相关问题