# Python zip

## 定义

`zip`从每个输入依次取一个元素组成元组，返回迭代器。默认情况下，一个输入耗尽时迭代停止，较长输入的其余元素不会出现在结果中；需要列表时可用`list`消费迭代器。

## 例子

`list(zip([1, 2, 3], "ab"))` 得到 `[(1, 'a'), (2, 'b')]`。两个输入长度不同，因此默认结果只有两组。

## 交互探索

调整两个输入的长度，查看可配对的位置和结果组数。

交互演示：长度不同时，\`zip\`会产生多少组？。调整两个输入长度，查看\`zip\`按位置配对的结果。 请在站点操作演示。

## 练习

1. `list(zip([1, 2, 3], "ab"))` 的结果是：

   * A.  `[(1, 'a'), (2, 'b')]`
   * B.  `[(1, 'a'), (2, 'b'), (3, None)]`
   * C.  `[(1, 'a'), (2, 'b'), (3, '')]`
   * D.  抛出异常

   答案：A

   `zip`以最短序列为准，字符串只有两个字符，第三个元素不会出现在结果里。
