好友
阅读权限30
听众
最后登录1970-1-1
|
ligxi
发表于 2021-4-11 21:54
本帖最后由 ligxi 于 2021-4-11 22:03 编辑
这样优雅吗?可能有点难理解,写了一点注释。
[Python] 纯文本查看 复制代码 titles = ['# a', '## b', '## c', '### d', '### e', '### f', '## g', '### h', '# i', '## j', '## k', '### l', '#### m',
'#### n', '### o', '# p', '## q', '### r', '### s', '## t', '### u', '# v', '## w', '### x', '### y', '## z']
# 序号和标题
sNumbers, contents = list(zip(*map(lambda x: x.split(), titles)))
# 最大计数长度
numbers = [0] * len(max(sNumbers))
#
title_list = []
for index, value in enumerate(sNumbers):
# 获取长度
serial_number_length = len(value)
# 自增
numbers[serial_number_length - 1] += 1
# 结果
serial_number = '{}'.format('.'.join(map(lambda x: str(x), numbers[:serial_number_length])))
# print(serial_number)
title_list.append([serial_number, contents[index]])
# 重置计数
numbers = numbers[:serial_number_length] + list(map(lambda x: 0, numbers[serial_number_length:]))
#
print(title_list)
封装为函数进行调用:
[Python] 纯文本查看 复制代码 # 假装是输入的内容
titles = ['# a', '## b', '## c', '### d', '### e', '### f', '## g', '### h', '# i', '## j', '## k', '### l', '#### m',
'#### n', '### o', '# p', '## q', '### r', '### s', '## t', '### u', '# v', '## w', '### x', '### y', '## z']
def serial_count(lst):
s_numbers, contents = list(zip(*map(lambda x: x.split(), lst)))
numbers = [0] * len(max(s_numbers))
title_list = []
for index, value in enumerate(s_numbers):
serial_number_length = len(value)
numbers[serial_number_length - 1] += 1
serial_number = '{}'.format('.'.join(map(lambda x: str(x), numbers[:serial_number_length])))
title_list.append([serial_number, contents[index]])
numbers = numbers[:serial_number_length] + list(map(lambda x: 0, numbers[serial_number_length:]))
return title_list
print(serial_count(titles)) |
|