Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Ian Kelly Newsgroups: comp.lang.python Subject: Re: Simple exercise Date: Mon, 14 Mar 2016 09:16:59 -0600 Lines: 29 Message-ID: References: <88c5b5fa-66a0-461a-8ae4-b3264b32f679@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: news.uni-berlin.de Giqa7u4QwQ4WDIH/Hn4AqgmBDOotw9z3hkYxcN4nUzZQ== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.007 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'reason,': 0.07; 'cc:addr :python-list': 0.09; 'benjamin': 0.09; 'length.': 0.09; 'lengths': 0.09; 'warn': 0.09; 'exception': 0.13; 'index': 0.13; 'useful,': 0.13; '2016': 0.16; 'cc:name:python list': 0.16; 'dropping': 0.16; 'iterables': 0.16; 'iterator': 0.16; 'length,': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'x).': 0.16; 'wrote:': 0.16; 'cc:2**0': 0.20; 'cc:addr:python.org': 0.20; 'meant': 0.22; 'pass': 0.22; 'am,': 0.23; 'advance.': 0.23; 'header:In-Reply-To:1': 0.24; 'mon,': 0.24; "i've": 0.25; 'example': 0.26; 'rest': 0.26; 'error': 0.27; 'equivalent': 0.27; 'message-id:@mail.gmail.com': 0.27; '14,': 0.27; 'function': 0.28; 'values': 0.28; 'strongly': 0.30; 'anyone': 0.32; 'items.': 0.33; 'raised': 0.33; 'subject:Simple': 0.33; 'though.': 0.33; 'received:google.com': 0.35; 'something': 0.35; 'item': 0.35; 'sometimes': 0.35; 'received:209.85': 0.36; 'possible': 0.36; 'subject:: ': 0.37; 'two': 0.37; 'johnson': 0.37; 'received:209.85.213': 0.37; 'received:209': 0.38; 'or,': 0.38; 'rather': 0.39; 'avoid': 0.61; 'march': 0.64; 'mar': 0.65; 'else.': 0.66; 'matter.': 0.66; 'percent': 0.66; 'hoping': 0.77; 'oscar': 0.84; 'absolutely': 0.88; 'to:none': 0.91; 'rick': 0.93; 'hundred': 0.96 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:cc; bh=kYu7XCad5GhFX0tNEolNP+CA+jIh8sErmNR4rjw6brE=; b=XyXOHj/djaRN5SF9fn8kEkM+1qzoo8iZGJzCE0z+3NvE0NxGy4E1GXiKrnXpmrI18q RyJKiui546/8GUKBuMlauEy3dEuZNgH6qqB1S1IfwK5Wz724+vo1TXslmmXaTkeqP+6E xs6ogK8XSs2QgMAqgv1iWJuNm9hUsVK6CfYOMvtiZJaPsK14A0gdgXgaPaJM7CGTOqMg 2tGR9+Py1MH2XkqrLSKZtPx8+a6hYPAHgLIlquZrP1dl6eIm7mC8Uh0YUOqEaOn952Yh sEbuzFvbK/vjH+CPieDCbshvhYAGOj495Nva+3E8Ca2wcRQhUn6O/rmDfoodFJ78ir36 f7SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:cc; bh=kYu7XCad5GhFX0tNEolNP+CA+jIh8sErmNR4rjw6brE=; b=l3SvYbFbJug2q+hgIU9ykiuwi/+R3xCrEReOTFob1NXr2wrELx4bGRaS6w/43FquZ3 H8uF9rCAoeSto8bGmP0ApGgwRQOtsMlGPsn1tadU3Jy5Wy08F4KmMiC55eAXbhfYr0P2 aX1HZP5K0WyeaRyMQrPT+8jbp4dFPoPWkEiKZs70PkxB4ITZci6T1GXK4CuUaQSfWUXG m5p5HaVhFVLu+Mv4mFF0Eo1yYJIXWUatGK6pN4q1lPq03YXWUKVM47H3onOUaQ70od2A l3sxfW0BJWI2PIoyyBvnFwAlPoT4c5e8y2HcZzTpNabNPk+y7HoayfZPNh/zJ6UztvYF c2wg== X-Gm-Message-State: AD7BkJIt9X4aDN4x4ICcQ1sz7saMWFtYEVr0Z3n+WZ66jZYODmHDBgRas4whWoOFRh2+lQLh27qGeFgg8Lr3Ug== X-Received: by 10.50.112.10 with SMTP id im10mr18339711igb.93.1457968659189; Mon, 14 Mar 2016 08:17:39 -0700 (PDT) In-Reply-To: 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:104820 On Mon, Mar 14, 2016 at 9:06 AM, Oscar Benjamin wrote: > On 14 March 2016 at 14:35, Rick Johnson wrote: >> >> I would strongly warn anyone against using the zip function >> unless > ... >> I meant to say: absolutely, one hundred percent *SURE*, that >> both sequences are of the same length, or, absolutely one >> hundred percent *SURE*, that dropping values is not going to >> matter. For that reason, i avoid the zip function like the >> plague. I would much rather get an index error, than let an >> error pass silently. > > I also think it's unfortunate that zip silently discards items. Almost > always when I use zip I would prefer to see an error when the two > iterables are not of the same length. It's sometimes very useful, though. For example on multiple occasions I've taken advantage of the fact that enumerate(x) is equivalent to zip(itertools.count(), x). If zip raised an error then that would only be possible using islice, and then only if the length is known in advance. Also, in order for zip to know that the lengths are not equal, it would have to try to read one additional item from the longer iterable. That's rather unfortunate if it's an iterator and you're hoping to catch the exception and then use the rest of the iterator for something else.