iter.md 1.3 KB
Newer Older
1 2
# Python 生成器推导式

F
feilong 已提交
3
Python 独步天下的推导式表达式,使用元表推导式过滤长度小于等于4的书籍
4 5 6

```python
def test():
F
feilong 已提交
7
    books = ('程序员修炼之道', '构建之法', '代码大全', 'TCP/IP协议详解')
8

F
feilong 已提交
9
    # TODO(you): 此处请为reading进行正确的赋值
10

F
feilong 已提交
11 12 13
    print("太长的书就不看了,只读短的:")
    for book in reading:
        print(" ->《{}》".format(book))
14

F
feilong 已提交
15
    print("可是发现书的名字短,内容也可能很长啊!")
16 17 18


if __name__ == '__main__':
F
feilong 已提交
19
    test()
20 21 22 23
```

请选出下列能**正确**实现这一功能的选项。

24 25 26 27
## template

```python
def test():
F
feilong 已提交
28
    books = ('程序员修炼之道', '构建之法', '代码大全', 'TCP/IP协议详解')
29

F
feilong 已提交
30
    reading = (book for book in books if len(book) <= 4)
31

F
feilong 已提交
32 33 34
    print("太长的书就不看了,只读短的:")
    for book in reading:
        print(" ->《{}》".format(book))
35

F
feilong 已提交
36
    print("可是发现书的名字短,内容也可能很长啊!")
37 38 39


if __name__ == '__main__':
F
feilong 已提交
40
    test()
41 42 43 44
```



45 46 47
## 答案

```python
48
reading = (book for book in books if len(book) <= 4)
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
```



## 选项

### A

```python
reading = (books[i] for book in books: if len(book) < 4)
```

### B

```python
reading = (book for book in books if len(book) < 4)
```

### C

```python
reading = (book for book in books: if len(book) <= 4)
```