您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:将名称列表划分为大小相等的子列表

Python:将名称列表划分为大小相等的子列表

这可能有效。我确信有一种更简单的方法……可能涉及itertools。请注意,这num_pages仅大致决定了您实际将获得的页面数。

编辑:哎呀!有一个错误- 它切断了最后一组!下面的内容应该是固定的,但是请注意,最后一页的长度会有些不可预测。另外,我添加.upper()了可能的小写名称

EDIT2:以前定义letter_groups的方法效率低下;以下基于dict的代码更具可扩展性:

names = ['Agrajag', 'Colin', 'Deep Thought', 'Ford Prefect' , 'Zaphod Beeblebrox', 'Zarquon']
num_pages = 3

def group_names(names, num_pages):
    letter_groups = defaultdict(list)
    for name in names: letter_groups[name[0].upper()].append(name)
    letter_groups = [letter_groups[key] for key in sorted(letter_groups.keys())]
    current_group = []
    page_groups = []
    group_size = len(names) / num_pages
    for group in letter_groups:
        current_group.extend(group)
        if len(current_group) > group_size:
            page_groups.append(current_group)
            current_group = []
    if current_group: page_groups.append(current_group)

    return page_groups

print group_names(names, num_pages)
python 2022/1/1 18:48:08 有340人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶