gpt4 book ai didi

python - 将一个K长度的列表拆分为尽可能 "even"的L个子列表,即使K/L留有余数

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:28 25 4
gpt4 key购买 nike

我不知道有什么更好的方式来表达我正在寻找的内容,所以请多多包涵。

假设我有一个包含 17 个元素的列表。为了简洁起见,我们将此列表表示为 ABCDEFGHIJKLMNOPQ。如果我想把它分成 7 个足够“均匀”的子列表,它可能看起来像这样:

ABC DE FGH IJ KL MNO PQ

这里,每个子列表的长度是3, 2, 3, 2, 2, 3, 2。最大长度只比最小长度多一:ABC DE FGH I JKL MN OPQ 也有七个子列表,但这里的长度范围是两个。

此外,检查每对 3 之间有多少个 2:这遵循 RANGE ≤ 1 的相同规则。ABC DEF GH 中的长度范围 IJ KLM NO PQ 也是1,但是不平衡:3, 3, 2, 2, 3, 2, 2。理想情况下,如果以这种方式继续减少子列表,则数字之间的偏差永远不会超过一个。

当然,以这种方式将列表“平均”划分为子列表的方法不止一种。我不是在寻找一套详尽的解决方案——如果我能在 Python 中为任意长度的列表和任意数量的子列表找到一个解决方案,那对我来说就足够了。问题是在解决这样的问题时,我什至不知道从哪里开始。有谁知道我在找什么?

最佳答案

>>> s='ABCDEFGHIJKLMNOPQ'
>>> parts=7
>>> [s[i*len(s)//parts:(i+1)*len(s)//parts] for i in range(parts)]
['AB', 'CD', 'EFG', 'HI', 'JKL', 'MN', 'OPQ']


>>> import string
>>> for j in range(26):
... print [string.uppercase[i*j//parts:(i+1)*j//parts] for i in range(parts)]
...
['', '', '', '', '', '', '']
['', '', '', '', '', '', 'A']
['', '', '', 'A', '', '', 'B']
['', '', 'A', '', 'B', '', 'C']
['', 'A', '', 'B', '', 'C', 'D']
['', 'A', 'B', '', 'C', 'D', 'E']
['', 'A', 'B', 'C', 'D', 'E', 'F']
['A', 'B', 'C', 'D', 'E', 'F', 'G']
['A', 'B', 'C', 'D', 'E', 'F', 'GH']
['A', 'B', 'C', 'DE', 'F', 'G', 'HI']
['A', 'B', 'CD', 'E', 'FG', 'H', 'IJ']
['A', 'BC', 'D', 'EF', 'G', 'HI', 'JK']
['A', 'BC', 'DE', 'F', 'GH', 'IJ', 'KL']
['A', 'BC', 'DE', 'FG', 'HI', 'JK', 'LM']
['AB', 'CD', 'EF', 'GH', 'IJ', 'KL', 'MN']
['AB', 'CD', 'EF', 'GH', 'IJ', 'KL', 'MNO']
['AB', 'CD', 'EF', 'GHI', 'JK', 'LM', 'NOP']
['AB', 'CD', 'EFG', 'HI', 'JKL', 'MN', 'OPQ']
['AB', 'CDE', 'FG', 'HIJ', 'KL', 'MNO', 'PQR']
['AB', 'CDE', 'FGH', 'IJ', 'KLM', 'NOP', 'QRS']
['AB', 'CDE', 'FGH', 'IJK', 'LMN', 'OPQ', 'RST']
['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STU']
['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STUV']
['ABC', 'DEF', 'GHI', 'JKLM', 'NOP', 'QRS', 'TUVW']
['ABC', 'DEF', 'GHIJ', 'KLM', 'NOPQ', 'RST', 'UVWX']
['ABC', 'DEFG', 'HIJ', 'KLMN', 'OPQ', 'RSTU', 'VWXY']

关于python - 将一个K长度的列表拆分为尽可能 "even"的L个子列表,即使K/L留有余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com