如何遍历二维列表打印表格?基于Python类get_all方法实现
很简单,我们完全可以借助get_all()的返回值来实现你想要的表格输出,不用直接调用单独的get_a()、get_b()、get_c()方法。下面是具体的实现方式:
首先,先拆解get_all()的返回结构:它返回的是一个包含表头和对应列数据的嵌套列表,格式为[['a', [1,2,3]], ['b', [4,5,6]], ['c', [7,8,9]]]。我们需要先把表头和每一列的数据拆分出来,再将列数据转换为行数据进行打印。
完整实现代码如下:
class example: def get_a(self): return [1,2,3] def get_b(self): return [4,5,6] def get_c(self): return [7,8,9] def get_all(self): return [['a',self.get_a()],['b',self.get_b()],['c',self.get_c()]] def example_print(): x = example() all_data = x.get_all() # 从get_all的结果中拆分表头和列数据 headers = [item[0] for item in all_data] data_columns = [item[1] for item in all_data] # 打印表头,用空格连接 print(' '.join(headers)) # 用zip(*data_columns)把列数据转成行数据,遍历打印每一行 for row in zip(*data_columns): # 将每行元素转为字符串后用空格连接打印 print(' '.join(map(str, row))) example_print()
运行这段代码后,会输出你想要的格式:
a b c 1 4 7 2 5 8 3 6 9
关键逻辑说明:
- 拆分数据:通过列表推导式分别提取表头(每个子列表的第一个元素)和列数据(每个子列表的第二个元素);
- 转置数据:
zip(*data_columns)中的*操作符会把三个列数据列表解包成zip的参数,效果等价于你之前写的zip(x.get_a(), x.get_b(), x.get_c()),实现列数据到行数据的转置; - 格式化打印:用
' '.join()把表头和每行元素拼接成空格分隔的字符串,保证输出格式统一。
如果是Python 2环境,只需要去掉print语句的括号(比如print ' '.join(headers))即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者463035818_is_not_an_ai
相关产品推荐
相关产品推荐

