从另一个列表创建具有特定字符串长度的列表

时间:2020-07-31 03:48:27

标签: python

对于以下说明中的任何混淆,我们深表歉意,但是我对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.']

非常感谢您的帮助/指导!

3 个答案:

答案 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.']