如何用循环替代重复代码实现随机整数列表的10×10表格打印?
问题描述
我生成了一个包含100个随机整数的列表list1,目前靠手动重复调用print函数打印不同切片,把它展示成10行的格式。现在想改用循环实现,但不知道具体怎么做。以下是我当前的代码和期望输出:
当前代码
import random def main(): list1 = [] for count in range(100): number = random.randint(1,100) list1.append(number) print(list1[0:9]) print(list1[10:19]) print(list1[20:29]) print(list1[30:39]) print(list1[40:49]) print(list1[50:59]) print(list1[60:69]) print(list1[70:79]) print(list1[80:89]) print(list1[90:99]) main()
期望输出
[35, 9, 53, 1, 13, 67, 48, 1, 38] [60, 43, 2, 95, 91, 33, 76, 45, 15] [17, 69, 63, 38, 49, 94, 77, 94, 65] [36, 14, 73, 3, 33, 41, 12, 71, 5] [5, 63, 86, 98, 77, 88, 41, 73, 43] [33, 37, 52, 50, 77, 97, 61, 6, 82] [65, 31, 60, 57, 91, 9, 50, 50, 7] [23, 94, 6, 21, 13, 99, 80, 18, 28] [9, 15, 18, 20, 47, 93, 88, 17, 17] [93, 97, 11, 40, 45, 34, 10, 55, 61]
解决方案
你可以用for循环遍历切片的起始索引,步长设为10,每次取对应区间的切片即可,这样就能替代重复的print语句:
import random def main(): list1 = [] for count in range(100): number = random.randint(1,100) list1.append(number) # 用循环替代手动切片打印 for i in range(0, 100, 10): print(list1[i:i+9]) main()
说明
range(0, 100, 10)会生成0, 10, 20, ..., 90这些起始索引,正好对应你手动写的每个切片的起始位置。list1[i:i+9]和你原来的list1[0:9]、list1[10:19]逻辑完全一致,都是取从索引i开始的9个元素。
另外,也可以用列表推导式简化列表生成的代码,让整体更简洁:
import random def main(): list1 = [random.randint(1, 100) for _ in range(100)] for i in range(0, 100, 10): print(list1[i:i+9]) main()
内容的提问来源于stack exchange,提问作者confused
相关产品推荐
相关产品推荐

