我有一些我不能理解的基本代码:
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
。我确定这是一个简单的怪癖,但我有点失落,并且有一段时间试图在网上找到答案。有人能指出我正确的方向吗?
答案 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 之后的列表