python - 每次运行函数时打印出列表的 n 个元素
问题描述
我有一个字符串列表,我需要创建一个函数,每次运行时打印出列表的 n 个元素。例如:
book1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o']
我第一次运行该函数时的预期输出,如果n = 5
:
a
b
c
d
e
第二次:
f
g
h
i
j
我试过这个:
def print_book(book):
printed = book
while printed != []:
for i in range(0, len(book), 5):
new_list = (book[i:i+5])
for el in new_list:
print(el)
break
del(printed[i:i+10])
我要么打印出整个列表,要么每次运行该函数时都打印前 n 个元素。如果已经问过这个问题,请指出给我,我真的很感激。谢谢!
解决方案
一种常见的方法是生成器表达式。生成器表达式在需要时生成它的值,因此不会立即创建整个列表
您的问题的解决方案可能是这样
book1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o']
def yield_book(book1):
for i in book1:
yield i;
def print_n_item(gen, n):
count = 0
for i in gen:
if count == n:
return
print(i)
count += 1
gen = yield_book(book1)
print_n_item(gen, 5) # prints a, b, c, d, e
print_n_item(gen, 5) # prints f, g, h, i, j
print_n_item(gen, 5) # prints k, l, m, n, o
这种方法耗尽了迭代器,因此可以使用一次,为了再次迭代,你必须调用yield_book
返回一个新的generator
推荐阅读
- python - Python 3.7.6 在 vscode 终端中可见,但在 ubuntu 终端中不可见
- reactjs - 如何使用 Material UI 或其他工具在 React.js 上制作此按钮?
- python - python的设置和集成以及使用Sqlite创建的数据库有什么问题?
- xml - 在正确的日文 XML 中获取“十六进制值 0x3C,是无效的属性字符”
- flutter - 在颤动中处理文本溢出
- wordpress - HTTP 严格传输安全
- html - 使用 JQuery 动态克隆的表单元素属性在服务器验证时恢复
- webpack - 如何减少 3D 曲面图的 Plotly.js 包大小?
- google-cloud-shell - 在谷歌云外壳中,是否可以将存储桶传输到远程服务器?
- java - Apache Flink Table 查询结果为字符串值