我有一个列表,例如list=['a','b']
。我想在“a”和“b”之间插入一个数字,例如1234。当我使用list[1:1]=str(1234)
时,它会返回['a','1','2','3','4','b']
。我想放弃这种模式:['a','1234','b']
。你能帮我吗?
答案 0 :(得分:1)
您可以使用insert
方法,该方法将索引位置作为第一个参数,将项目作为第二个参数插入:
In [1]: l = ['a', 'b']
In [2]: l.insert(1, 1234)
In [3]: l
Out[3]: ['a', 1234, 'b']
请注意l
是此处的列表 - 您希望避免使用内置Python关键字(例如list
)作为变量名称,因为它最终会导致您(以及其他人读取您的代码) :))头疼的道路。至于为什么你的工作不起作用 - 当你分配一个列表的片段(例如l[1:1]
)时,等式右边的部分需要是一个可迭代的(即你能做的事情)迭代,像另一个列表,字符串等)。然后,它会使该可迭代的每个元素成为主列表中的自己的元素,从您指定的位置开始。当您说str(1234)
时,会返回'1234'
,当您将其分配到列表的切片时会分解为['1', '2', '3', '4']
。
如果你想使用切片分配完成插入,你可以做类似的事情(注意数字如何包含在列表括号中,使其成为单元素列表),但这只是一个例子来看看是什么正在进行 - insert
有更好的表现:
In [18]: l = ['a', 'b']
In [19]: l[1:] = [1234] + l[1:]
In [20]: l
Out[20]: ['a', 1234, 'b']
这将获取从'b'
开始的列表的切片,并将其替换为列表[1234]
以及从'b'
开始的原始列表的部分,这实际上导致同样的事情。