简体   繁体   English

在每 2 个元素之后在列表中插入元素

[英]insert element in a list after every 2 element

I have this code:我有这个代码:

l = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]

def add(l, n):
    lret = l.copy()
    i = n
    while i <= len(lret):
      lret.insert(i, 0.0)
      i += (n+1)
    return lret

lret = add(l,2)

print(lret)

Is a way to make the add() function a one-line function?是一种使add()函数成为单行函数的方法吗?

You can use zip() to build tuples that contain n elements from the original list with an added element, and then use chain.from_iterable() to flatten those tuples into the final list:您可以使用zip()构建包含原始列表中的n元素并添加元素的元组,然后使用chain.from_iterable()将这些元组展平到最终列表中:

from itertools import repeat, chain
def add(lst, n):
    return list(chain.from_iterable(zip(*(lst[s::n] for s in range(n)), repeat(0.0))))

This outputs:这输出:

[1.0, 2.0, 0.0, 3.0, 4.0, 0.0, 5.0, 6.0, 0.0]

Possible solution if you want the whole block in one line:如果您希望将整个块放在一行中,可能的解决方案:

return [x for y in (l[i:i + n] + [0.0] * (i < len(l) - n + 2) for
                   i in xrange(0, len(l), n)) for x in y]

Gives the same output给出相同的输出

[1.0, 2.0, 0.0, 3.0, 4.0, 0.0, 5.0, 6.0, 0.0] [1.0, 2.0, 0.0, 3.0, 4.0, 0.0, 5.0, 6.0, 0.0]

Found another way to do it:找到了另一种方法:

def add(l,n=2):
    return [item for sublist in [(e,) if i % n == 0 or i == 0 else (e, 0.0) for i, e in enumerate(l)] for item in sublist]

[1.0, 2.0, 0.0, 3.0, 4.0, 0.0, 5.0, 6.0, 0.0] [1.0, 2.0, 0.0, 3.0, 4.0, 0.0, 5.0, 6.0, 0.0]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在每个其他元素列表理解之后在 Python 列表中插入元素 - Insert element in Python list after every other element list comprehension 如何在python列表中的每个其他元素之后插入一个元素 - How to insert an element after every other element in python list 在 Python 列表中每第 n 个元素后插入元素 - Insert element in Python list after every nth element 在列表中的第7个元素后插入null - insert null after every 7th element in the list 在list comprehension python中的每个元素后面插入逗号 - insert comma after every element in list comprehension python 在字符串列表中的特定元素之后插入一个元素 - Insert an element after a specific element in a List of strings 通过标签在每个元素后插入 XML 节点 - Insert XML node after every element by tag 在列表列表中的每第 n 个位置插入元素 - Insert element at every nth location in list of lists 如何在子列表中的每个其他元素之后插入一个元素? - How to insert an element after every other element in a sublist? 我有一个列表 [(620.9, 234.5), (591.6, 205.4), (823.4, 205.8)]。 在每个元素之后我想在每个元素之后插入一个元素(x,y) - I have a list [(620.9, 234.5), (591.6, 205.4), (823.4, 205.8)]. After every element i want to insert an element(x,y) after every element
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM