首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python列表中每第n个元素之后插入元素

在Python列表中每第n个元素之后插入元素
EN

Stack Overflow用户
提问于 2015-06-25 11:05:20
回答 9查看 43.5K关注 0票数 32

假设我有一个这样的Python列表:

代码语言:javascript
复制
letters = ['a','b','c','d','e','f','g','h','i','j']

我想在每第n个元素后插入一个'x‘,假设该列表中有三个字符。结果应该是:

代码语言:javascript
复制
letters = ['a','b','c','x','d','e','f','x','g','h','i','x','j']

我知道我可以通过循环和插入来做到这一点。我实际上正在寻找的是Pythonish式的方式,也许是一行程序?

EN

回答 9

Stack Overflow用户

发布于 2015-06-25 11:29:32

尝尝这个

代码语言:javascript
复制
i = n
while i < len(letters):
    letters.insert(i, 'x')
    i += (n+1)

其中,n是要插入'x'的元素数之后的值。

这是通过初始化变量i并将其设置为等于n来实现的。然后设置一个在i小于letters长度时运行的while循环。然后在letters中的索引i处插入'x'。然后,您必须将n+1的值添加到i。您必须执行n+1而不仅仅是n的原因是,当您在letters中插入一个元素时,它会将列表的长度扩展一。

在您的示例中,当n为3并且您想要插入'x'时,它将如下所示

代码语言:javascript
复制
letters = ['a','b','c','d','e','f','g','h','i','j']
i = 3
while i < len(letters):
    letters.insert(i, 'x')
    i += 4

print letters

它会打印出来

代码语言:javascript
复制
['a', 'b', 'c', 'x', 'd', 'e', 'f', 'x', 'g', 'h', 'i', 'x', 'j']

这就是你的预期结果。

票数 15
EN

Stack Overflow用户

发布于 2015-06-25 11:57:48

尽管在for循环中使用list.insert()似乎更有效地利用内存,但是为了在一行中完成,您还可以在列表的每个nth索引上分割的每个等分块的末尾附加给定值。

代码语言:javascript
复制
>>> from itertools import chain

>>> n = 2
>>> ele = 'x'
>>> lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list(chain(*[lst[i:i+n] + [ele] if len(lst[i:i+n]) == n else lst[i:i+n] for i in xrange(0, len(lst), n)]))
[0, 1, 'x', 2, 3, 'x', 4, 5, 'x', 6, 7, 'x', 8, 9, 'x', 10]
票数 6
EN

Stack Overflow用户

发布于 2016-07-14 00:20:13

我想为每个项目添加一个新元素。

这个怎么样?

代码语言:javascript
复制
a=[2,4,6]
for b in range (0,len(a)):
    a.insert(b*2,1)

A现在是

代码语言:javascript
复制
[1, 2, 1, 4, 1, 6]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31040525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档