[英]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.