我有一个列表,例如list=['a','b']
. 我想在“a”和“b”之间插入一个数字,例如 1234。当我使用list[1:1]=str(1234)
它时返回['a','1','2','3','4','b']
. 我想以这种模式输出:['a','1234','b']
. 请你帮助我好吗?
问问题
99 次
1 回答
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'
,这基本上产生了相同的结果。
于 2012-11-22T06:59:22.510 回答