繁体   English   中英

如何在Python 3中将列表拆分为嵌套列表?

[英]how to split a list into a nested list in Python 3?

我想将一个列表拆分为一个嵌套列表。 我的清单是这样的:

[1,2,1,3,2]

现在,我希望输出如下所示:

[[1,2],[2,1],[1,3],[3,2]]

是否有可能进行上述输出?

您可以使用zip

lst = [1,2,1,3,2]

res = [list(pair) for pair in zip(lst, lst[1:])]
print(res)  # -> [[1, 2], [2, 1], [1, 3], [3, 2]]

注意zip中的lst的第一个实例不必切片,因为它是指示将要生成的元组数量的最小实例。


就像@ Jean-FrancoisFabre在评论中说的那样,如果原始列表很大 ,则可能要使用生成器而不是切片。

res = [list(pair) for pair in zip(lst, itertools.islice(lst, 1, None))]

这种方法的优点(或前一种方法的缺点)是,未在内存中创建zip中使用的第二个列表( lst[1:] ),但是您需要import itertools才能使其工作。

您正在寻找字母组合 这是从序列生成n元语法的通用函数。

def ngrams(seq, n):
    return [seq[i:i + n] for i in range(len(seq) - n + 1)]

a = [1,2,1,3,2]

print ngrams(a, 2)

# [[1, 2], [2, 1], [1, 3], [3, 2]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM