如何将一个列表拆分为n个大小的块,其中n是一个整数的可iterable列表?

2024-06-14 12:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个单词列表和一个整数列表'n'。如何将单词列表分成n个大小的块(不均匀)?你知道吗

例如

words = ['apple', 'orange', 'oof', 'banana', 'apple', 'cherries', 'tomato']
n = ['2', '1', '4']

输出:

[['apple', 'orange'], ['oof'], ['banana', 'apple', 'cherries', 'tomato']]

Tags: apple列表整数单词bananawordsorangetomato
3条回答

简单的O(n)策略:

words = ['apple', 'orange', 'oof', 'banana', 'apple', 'cherries', 'tomato']
n = ['2', '1', '4']
start = 0
out = []
for num in n:
    num = int(num)
    out.append(words[start:start+num])
    start += num

您可以将列表理解与iternext一起使用:

words = ['apple', 'orange', 'oof', 'banana', 'apple', 'cherries', 'tomato']
n = ['2', '1', '4']
new_words = iter(words)
result = [[next(new_words) for _ in range(int(i))] for i in n]

输出:

[['apple', 'orange'], ['oof'], ['banana', 'apple', 'cherries', 'tomato']]

另一个答案是:

output = []
count = 0
for i in range(len(n)):
    chunk_size = int(n[i])
    chunk = []
    for j in range(chunk_size):
        index = (i * j) + j
        chunk.append(words[count])
        count = count + 1
    output.append(chunk)

print(output)

相关问题 更多 >