Search code examples
pythonlist-comprehension

Python List Comprehension: Add n specific elements after each element in a list


I would like to add n specific elements after each element in a list using only list comprehension.

Example:

l = [A, B, C, D, E]

element = ''

for n = 1 should result in

l = [A, '', B, '', C, '', D, '', E, '']

or n = 2 should result in

l = [A, '', '', B, '', '', C, '', '', D, '', '', E, '', '']


Solution

  • It is pretty straight-forward without the List Comprehension.

    If you want to use List Comprehension you can do something like:

    l = ['A','B','C','D','E']
    
    [(x,'') for x in l]
    #[('A', ''), ('B', ''), ('C', ''), ('D', ''), ('E', '')]
    

    Flatten this nested list by:

    [item for sublist in ((x,'') for x in l) for item in sublist]
    #['A', '', 'B', '', 'C', '', 'D', '', 'E', '']
    

    Similarly for two blank spaces:

    [item for sublist in ((x,'','') for x in l) for item in sublist]
    #['A', '', '', 'B', '', '', 'C', '', '', 'D', '', '', 'E', '', '']
    

    Edit:

    n=1
    [item for sublist in ([x] + ['']*n for x in l) for item in sublist]
    #['A', '', 'B', '', 'C', '', 'D', '', 'E', '']
    
    n=2
    #['A', '', '', 'B', '', '', 'C', '', '', 'D', '', '', 'E', '', '']