如何在print()中为两个解包列表添加分隔内容并简化写法?
问题:如何用更简洁优雅的方式一次
print()输出排序和反转后的列表? 我有一个整数列表,需要通过一次print()调用,按照以下模板(两个输出间用'\n'分隔)打印排序后的列表和反转后的列表:
*sorted(lst)
*reversed(lst)
由于使用了解包列表,无法使用sep参数或f-string,目前的暴力实现方法如下:
int_lst = [4, 5, 2, 1] lst = sorted(int_lst) print(" ".join(str(i) for i in lst) + "\n" + " ".join(str(j) for j in reversed(lst)))
输出结果:
1 2 4 5
5 4 2 1
请问有没有更简洁优雅的实现方式?
几种简洁实现方案:
方案1:利用
print多参数+sep分隔
把两行格式化后的字符串作为print的参数,用sep='\n'自动分隔,避免手动拼接字符串,同时用map(str, ...)简化类型转换:int_lst = [4, 5, 2, 1] sorted_lst = sorted(int_lst) print(' '.join(map(str, sorted_lst)), ' '.join(map(str, reversed(sorted_lst))), sep='\n')方案2:生成行列表后拼接打印
先将两行内容存入列表,再用'\n'连接后一次性打印,逻辑清晰且代码紧凑:int_lst = [4, 5, 2, 1] sorted_lst = sorted(int_lst) print('\n'.join([ ' '.join(map(str, sorted_lst)), ' '.join(map(str, reversed(sorted_lst))) ]))方案3:两次
print调用(简洁替代)
如果可以接受两次print调用,这种写法最直观,直接解包列表并控制分隔符和换行:int_lst = [4, 5, 2, 1] sorted_lst = sorted(int_lst) print(*sorted_lst, sep=' ') print(*reversed(sorted_lst), sep=' ')
内容的提问来源于stack exchange,提问作者fSyFXDe8gnAo
相关产品推荐
相关产品推荐

