Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Cameron Simpson Newsgroups: comp.lang.python Subject: Re: repeat items in a list Date: Sun, 27 Mar 2016 10:05:47 +1100 Lines: 29 Message-ID: References: <8935d5dc-5e62-4fa8-8e8f-bd5b1787ee9f@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Trace: news.uni-berlin.de pZaNjgkIc32uuTK/Wx/JZwpfyyHGEBzszNINZY4rVq5A== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.004 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'elements.': 0.05; 'repeated': 0.07; "'a',": 0.16; "'b',": 0.16; 'elements,': 0.16; 'from:addr:cs': 0.16; 'from:addr:zip.com.au': 0.16; 'from:name:cameron simpson': 0.16; 'iterable': 0.16; 'itertools': 0.16; 'message-id:@cskk.homeip.net': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'simpson': 0.16; 'sure.': 0.16; 'wrote:': 0.16; 'case.': 0.18; 'element': 0.18; 'together.': 0.20; 'cheers,': 0.22; 'decide': 0.23; '(or': 0.23; 'elements': 0.23; 'header:In-Reply-To:1': 0.24; 'header:User-Agent:1': 0.26; 'subject:list': 0.26; 'module.': 0.27; 'function': 0.28; 'convert': 0.29; 'another': 0.32; 'lists': 0.34; 'list': 0.34; 'gets': 0.35; 'follows:': 0.35; 'instead': 0.36; 'there': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'really': 0.37; 'charset:us-ascii': 0.37; 'received:localdomain': 0.38; 'end': 0.39; 'to:addr:python.org': 0.40; 'your': 0.60; 'cameron': 0.66; '(hint:': 0.84; 'complexity': 0.84; 'email addr:aol.com': 0.97 Content-Disposition: inline In-Reply-To: <8935d5dc-5e62-4fa8-8e8f-bd5b1787ee9f@googlegroups.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com comp.lang.python:105793 On 26Mar2016 15:12, beliavsky@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? Sure. As with all one liners, there comes a degree of complexity when it gets in the way of readability; you must decide what is better in your use case. Look up the chain() function from the itertools module. Generate 2 (or nrep) length lists from each element of the original list and chain() them together. That gets you an iterable of all the elements. If you really need a list out the end instead of the iterable of the elements, convert the iterable to a list (hint: lists can be initialised with iterables). Cheers, Cameron Simpson