|
发表于 2022-1-30 14:29:49
|
显示全部楼层
还还还是有 BUG:
- list1 = [[-2,-1213214234,0],[1342,2,3],[234,5,6]]
- space = 5
- string = ""
- space_with_number = (len(str(max([each for each_row in list1 for each in each_row],key = lambda x:len(str(x)))))) * 2 + space
- space = []
- for i in range(len(list1)):
- space.append([int(space_with_number - len(each)) for each in [each_row for each_row in (" ".join([str(each) for each in [each for each_row in list1 for each in each_row][len([each for each_row in list1[:i + 1] for each in each_row]) - len(list1[i]):len([each for each_row in list1[:i + 1] for each in each_row])]]).split())]])
- space = [each for each_line in space for each in each_line]
- value = [str(each) for each_line in list1 for each in each_line]
- i = 0
- for x in zip(value,space):
- if i % 3 == 0:
- print()
- print(x[0] + x[1] * " ",end = "")
- i += 1
- from typing import Union
- def no_list_list(
- x: Union[list, tuple, set], no_tuples: bool = False, no_sets: bool = False
- ) -> list:
- """
- 禁止列表套娃函数(使用递归)
- 返回值: 列表
- ### 参数:
- x: 套娃的 列表 | 元组 | 集合
- no_tuples: 禁止元组套娃
- no_sets: 禁止集合套娃
- ### 例子:
- ```
- no_list_list( [ [ [ 1, 2, 3, 4, 5 ] ] ] )
- [1, 2, 3, 4, 5]
- no_list_list( [ [ [ 1, 2, 3, 4, 5 ], 6 ], 7 ] )
- [1, 2, 3, 4, 5, 6, 7]
- ```
- """
- new_list = []
- for i in x:
- if (
- (isinstance(i, list))
- or (no_tuples and isinstance(i, tuple))
- or (no_sets and isinstance(i, set))
- ):
- new_list.extend(no_list_list(i, no_tuples, no_sets))
- else:
- new_list.append(i)
- return new_list
- class Table:
- """
- 初始化 Table
- """
- def __init__(self, table: list):
- self.table = table
- self.length = len(self.table[0]), len(self.table)
- self.__check()
- """
- 检查 self.table 是否合法
- """
- def __check(self):
- temp = set([len(x) for x in self.table])
- if len(temp) != 1:
- raise Exception()
- """
- 渲染 self.table
- """
- def render(self):
- col_spaces = 4
- l = no_list_list(self.table)
- rendered = ""
- # 每列之间的空,存储到 col_spaces
- for i in l:
- if len(str(i)) > col_spaces - 4:
- col_spaces = len(str(i)) + 4
- print(col_spaces)
- # 正式渲染
- for i in self.table:
- for j in i:
- rendered += str(j) + " " * (col_spaces - len(str(j)))
- rendered += "\n"
- return rendered
- print(Table(list1).render())
复制代码
from typing import Union
def no_list_list(
x: Union[list, tuple, set], no_tuples: bool = False, no_sets: bool = False
) -> list:
"""
禁止列表套娃函数(使用递归)
返回值: 列表
### 参数:
x: 套娃的 列表 | 元组 | 集合
no_tuples: 禁止元组套娃
no_sets: 禁止集合套娃
### 例子:
```
no_list_list( [ [ [ 1, 2, 3, 4, 5 ] ] ] )
[1, 2, 3, 4, 5]
no_list_list( [ [ [ 1, 2, 3, 4, 5 ], 6 ], 7 ] )
[1, 2, 3, 4, 5, 6, 7]
```
"""
new_list = []
for i in x:
if (
(isinstance(i, list))
or (no_tuples and isinstance(i, tuple))
or (no_sets and isinstance(i, set))
):
new_list.extend(no_list_list(i, no_tuples, no_sets))
else:
new_list.append(i)
return new_list
class Table:
"""
初始化 Table
"""
def __init__(self, table: list):
self.table = table
self.length = len(self.table[0]), len(self.table)
self.__check()
"""
检查 self.table 是否合法
"""
def __check(self):
temp = set([len(x) for x in self.table])
if len(temp) != 1:
raise Exception()
"""
渲染 self.table
"""
def render(self):
col_spaces = 4
l = no_list_list(self.table)
rendered = ""
# 每列之间的空,存储到 col_spaces
for i in l:
if len(str(i)) > col_spaces - 4:
col_spaces = len(str(i)) + 4
print(col_spaces)
# 正式渲染
for i in self.table:
for j in i:
rendered += str(j) + " " * (col_spaces - len(str(j)))
rendered += "\n"
return rendered
print(Table(list1).render())
[/code]
上面是我的,下面是你的,结果是:
- -2 -1213214234 0
- 1342 2 3
- 234 5 6 6
- 15
- -2 -1213214234 0
- 1342 2 3
- 234 5 6
复制代码
对齐是对齐了,可这多出来的 15 和 6 又是从何而来呢??! |
|