如何将带编号的列表输出为n列或表格化格式?
问题
需要将列表以2列形式展示,同时为每个列表项添加编号。现有代码已实现编号功能,但无法按预期分成2列。
现有代码
myList = ["AASD", "ASDASD", "QWEQ", "GFHG", "YUIYU", "NSDF", "LDFS", "QSDAD", "FDRT", "YSLSJ"] count = 0 for j, i in enumerate(myList): count += 1 if j%2==0: print('\n') #print(i, end= " ") # 使用该行代码可实现2列但无编号 print ("{} {}".format(count,i)) # 使用该行代码有编号但仅单列
当前输出
1 AASD 2 ASDASD 3 QWEQ 4 GFHG 5 YUIYU 6 NSDF 7 LDFS 8 QSDAD 9 FDRT 10 YSLSJ
期望输出
1. AASD 2. ASDASD 3. QWEQ 4. GFHG 5. YUIYU 6. NSDF 7. LDFS 8. QSDAD 9. FDRT 10. YSLSJ
解决方案
原代码问题在于每次调用print()都会自动换行,导致每个列表项单独占一行。只需控制换行时机,并通过格式化对齐实现2列展示:
修改后的代码:
myList = ["AASD", "ASDASD", "QWEQ", "GFHG", "YUIYU", "NSDF", "LDFS", "QSDAD", "FDRT", "YSLSJ"] for idx, item in enumerate(myList, start=1): # 格式化带编号的项,左对齐并预留固定宽度保证列对齐 formatted_item = f"{idx}. {item:<10}" # 偶数编号项输出后换行,奇数项不换行,实现2列同行 print(formatted_item, end="\n" if idx % 2 == 0 else "")
代码说明
- 使用
enumerate(myList, start=1)直接从1开始生成编号,省去额外维护count变量的麻烦。 f"{idx}. {item:<10}"中的<10表示将内容左对齐,占用10个字符宽度,确保同一行的两个列表项对齐整齐。- 通过
end参数控制换行逻辑:只有当输出偶数编号的项时才换行,奇数项保持在当前行,从而实现2列展示效果。
若列表长度为奇数,最后一个项会单独占一行,可根据实际需求调整末尾的换行逻辑。
内容的提问来源于stack exchange,提问作者DarCoy
相关产品推荐
相关产品推荐

