Python中如何用循环实现按指定行数遍历列表并打印内容?
问题描述
现有Python代码定义:
lyrics = ["I want to break free", "I want to break free", "I want to break free", "yes, I want to break free"] number_of_lines = 6
需要创建一个循环,打印number_of_lines指定的行数。示例中需要遍历lyrics列表1.5次:
- 先打印整个列表(共4行)
- 再打印列表的前2行,从而达到6行的要求
目前写出的代码只能打印整个列表:
for line in lyrics: print(line)
请问具体该如何实现这一需求?
解决方案
方法一:手动计算完整循环与剩余行数
通过整除和模运算拆分完整遍历次数与剩余需要打印的行数,分两部分处理:
lyrics = ["I want to break free", "I want to break free", "I want to break free", "yes, I want to break free"] number_of_lines = 6 lyrics_len = len(lyrics) # 计算需要完整遍历列表的次数 full_rounds = number_of_lines // lyrics_len # 计算遍历完完整轮次后剩余需要打印的行数 remaining = number_of_lines % lyrics_len # 打印完整轮次的内容 for _ in range(full_rounds): for line in lyrics: print(line) # 打印剩余的行数 for line in lyrics[:remaining]: print(line)
方法二:利用迭代工具简化代码
借助itertools.cycle生成无限循环的迭代器,再通过islice截取前number_of_lines个元素打印,代码更简洁:
from itertools import cycle, islice lyrics = ["I want to break free", "I want to break free", "I want to break free", "yes, I want to break free"] number_of_lines = 6 for line in islice(cycle(lyrics), number_of_lines): print(line)
也可以用循环计数的方式实现,不需要islice:
from itertools import cycle lyrics = ["I want to break free", "I want to break free", "I want to break free", "yes, I want to break free"] count = number_of_lines = 6 for line in cycle(lyrics): if count <= 0: break print(line) count -= 1
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

