Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #105833

Re: repeat items in a list

From Jussi Piitulainen <jussi.piitulainen@helsinki.fi>
Newsgroups comp.lang.python
Subject Re: repeat items in a list
Date 2016-03-27 14:09 +0300
Organization A noiseless patient Spider
Message-ID <lf5bn60qis8.fsf@ling.helsinki.fi> (permalink)
References <8935d5dc-5e62-4fa8-8e8f-bd5b1787ee9f@googlegroups.com> <74fc27bf-22fe-4f7e-ac54-78be6b518562@googlegroups.com>

Show all headers | View raw


Antonio Caminero Garcia writes:
> On Saturday, March 26, 2016 at 11:12:58 PM UTC+1, beli...@aol.com wrote:
>> I can create a list that has repeated elements of another list as
>> follows:
>> 
>> xx = ["a","b"]
>> nrep = 3
>> print xx
>> yy = []
>> for aa in xx:
>>     for i in range(nrep):
>>         yy.append(aa)
>> print yy
>> 
>> output:
>> ['a', 'b']
>> ['a', 'a', 'a', 'b', 'b', 'b']
>> 
>> Is there a one-liner to create a list with repeated elements?
>
> What about this?
>
> def rep_elements(sequence, nrep):
>     #return [ritem for item in sequence for ritem in [item]*nrep]
>     return list(chain.from_iterable(([item]*nrep for item in sequence)))
>
> sequence = ['h','o','l','a']
> print(rep_elements(sequence,  3))

A thing to know about the comprehension-syntaxes is that they correspond
precisely to nested loops (and conditions, but conditions don't appear
in the present example) with an .append inside.

xx = "ab"
nrep = 3
print([ aa for aa in xx for i in range(nrep) ])

(This has been posted in this thread a few times already, but I think
the systematic correspondence to the original loops was left unstated.
Apologies in advance if I missed something.)

The resulting list has some hidden name. The original loops should be
re-mentalized for an even closer correspondence as follows.

g47 = []
for aa in xx:            # Loopy ...
   for i in range(nrep): # ... do!
      g47.append(aa)     # <-- _This_ aa is one of the result items.
yy = g47

A thing about range objects is that they can be reused, so the present
example could also reuse just one.

xx = "ab"
reps = range(3)
print([ aa for aa in xx for i in reps ])

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

repeat items in a list beliavsky@aol.com - 2016-03-26 15:12 -0700
  Re: repeat items in a list Cameron Simpson <cs@zip.com.au> - 2016-03-27 10:05 +1100
  Re: repeat items in a list Erik <python@lucidity.plus.com> - 2016-03-26 23:23 +0000
    Re: repeat items in a list beliavsky@aol.com - 2016-03-26 16:36 -0700
      Re: repeat items in a list Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2016-03-28 17:30 +0000
        Re: repeat items in a list Chris Angelico <rosuav@gmail.com> - 2016-03-29 08:25 +1100
          Re: repeat items in a list Antonio Caminero Garcia <tonycamgar@gmail.com> - 2016-03-29 01:43 -0700
        Re: repeat items in a list Erik <python@lucidity.plus.com> - 2016-03-28 23:14 +0100
  Re: repeat items in a list Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-26 23:28 +0000
    Re: repeat items in a list beliavsky@aol.com - 2016-03-26 16:54 -0700
      Re: repeat items in a list Paul Rubin <no.email@nospam.invalid> - 2016-03-26 22:35 -0700
  Re: repeat items in a list Antonio Caminero Garcia <tonycamgar@gmail.com> - 2016-03-27 01:02 -0700
    Re: repeat items in a list Antonio Caminero Garcia <tonycamgar@gmail.com> - 2016-03-27 01:30 -0700
    Re: repeat items in a list Jussi Piitulainen <jussi.piitulainen@helsinki.fi> - 2016-03-27 14:09 +0300
  Re: repeat items in a list larudwer <larudwer@freenet.de> - 2016-03-27 11:52 +0200
    Re: repeat items in a list Antonio Caminero Garcia <tonycamgar@gmail.com> - 2016-03-27 04:13 -0700
      Re: repeat items in a list larudwer <larudwer@freenet.de> - 2016-03-28 13:36 +0200
        Re: repeat items in a list Random832 <random832@fastmail.com> - 2016-03-28 10:04 -0400
        Re: repeat items in a list Vito De Tullio <vito.detullio@gmail.com> - 2016-03-29 23:25 +0200
        Re: repeat items in a list Michael Selik <michael.selik@gmail.com> - 2016-03-29 22:05 +0000
        Re: repeat items in a list Peter Otten <__peter__@web.de> - 2016-03-30 17:52 +0200

csiph-web