Python中如何打印列表元素并使其编号从1开始
你修改range参数后触发越界的原因很简单:Python列表的索引默认从0开始,list2的有效索引范围是0 ~ len(list2)-1,当你把range设为range(1, len(list2)+1)时,循环变量i最大会取到len(list2),此时访问list2[i]就超出了列表的有效索引范围,自然会报错。
方案1:打印时直接给序号+1
不用改动range的参数,只需要在打印序号的时候把i加1即可,改动量最小:
import random list1 = [name1,name2,name3,name4,name5,name6,name7,name8,name9,name10] list2 = random.sample(list1,6) for i in range(len(list2)): print(i+1, list2[i])
方案2:用enumerate指定起始序号(更推荐)
Python内置的enumerate函数可以直接自定义遍历的起始序号,写法更简洁易读,也符合Python的编码习惯:
import random list1 = [name1,name2,name3,name4,name5,name6,name7,name8,name9,name10] list2 = random.sample(list1,6) # start参数指定序号从1开始 for idx, name in enumerate(list2, start=1): print(idx, name)
如果你需要输出要求的表格格式,可以用以下代码直接生成Markdown表格:
import random list1 = [name1,name2,name3,name4,name5,name6,name7,name8,name9,name10] list2 = random.sample(list1,6) # 输出表格表头和分隔线 print("| 序号 | 姓名 |") print("| ---- | ---- |") for idx, name in enumerate(list2, start=1): print(f"| {idx} | {name} |")
运行后输出的效果示例如下:
| 序号 | 姓名 |
|---|---|
| 1 | name3 |
| 2 | name7 |
| 3 | name1 |
| 4 | name10 |
| 5 | name4 |
| 6 | name8 |
内容的提问来源于stack exchange,提问作者Noobie
相关产品推荐
相关产品推荐

