在Python中列出一个大于10的数字列表

时间:2012-11-22 06:55:37

标签: python-2.7

我有一个列表,例如list=['a','b']。我想在“a”和“b”之间插入一个数字,例如1234。当我使用list[1:1]=str(1234)时,它会返回['a','1','2','3','4','b']。我想放弃这种模式:['a','1234','b']。你能帮我吗?

1 个答案:

答案 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'开始的原始列表的部分,这实际上导致同样的事情。

相关问题