对于以下说明中的任何混淆,我们深表歉意,但是我对Python还是有点陌生。
我有一个文本列表,我想根据单独的值列表将列表分成更大的部分。
例如:
lst_a = ['This', 'is', 'an', 'example', 'of', 'a', 'simple', 'English', 'sentence.']
lst_b = [3, 4, 2]
所需结果:
new_lst_a = ['This is an', 'example of a simple', 'English sentence.']
非常感谢您的帮助/指导!
答案 0 :(得分:4)
使用 slices 这样的事情:
lst_a = ['This', 'is', 'an', 'example', 'of', 'a', 'simple', 'English', 'sentence.']
lst_b = [3, 4, 2]
new_list = []
index = 0
for n in lst_b:
new_list.append(' '.join(lst_a[index:index + n]))
index += n
print(new_list)
输出:
['This is an', 'example of a simple', 'English sentence.']
答案 1 :(得分:2)
如果编写简单的for循环,则可以使用原始列表的迭代器。这种方法不会产生不必要的副本。
>>> result = []
>>> it = iter(lst_a)
>>> for n in lst_b:
... s = " ".join(next(it) for i in range(n))
... result.append(s)
...
>>> result
['This is an', 'example of a simple', 'English sentence.']
答案 2 :(得分:0)
您可以使用islice
一次抓取n个元素来轻松做到这一点
>>> from itertools import islice
>>> lst_a = ['This', 'is', 'an', 'example', 'of', 'a', 'simple', 'English', 'sentence.']
>>> lst_b = [3, 4, 2]
>>>
>>> itr = iter(lst_a)
>>> [' '.join(islice(itr, n)) for n in lst_b]
['This is an', 'example of a simple', 'English sentence.']