简体   繁体   English

Python:使用列表推导将列表切成列表列表

[英]Python: slicing a list into a list of lists using list comprehension

I have a simple list like this: 我有一个简单的清单,像这样:

mylist=[0,1,2,3,4,5,6,7,8,9]

which I want to slice creating a list of lists. 我想切片创建列表列表。 The intended outcome is: 预期的结果是:

sliced=[[0],[0,1],[0,1,2],[0,1,2,3],...]


  1. First attempt: sliced=[mylist[i:i+n] for i in range(0, len(mylist), n)] 第一次尝试: sliced=[mylist[i:i+n] for i in range(0, len(mylist), n)]

    wrong result: sliced=[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] 错误结果: sliced=[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]


  1. Second attempt: sliced=[[mylist[l]] for l in range(0,10,1)] 第二次尝试: sliced=[[mylist[l]] for l in range(0,10,1)]

    wrong result: sliced=[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] 错误结果: sliced=[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]]


How should I handle this? 我该如何处理?

Like this? 像这样?

>>> mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> sliced = [mylist[0:i] for i in range(1, len(mylist) + 1)]
>>> sliced
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]


Further reading: Explain Python's slice notation 进一步阅读: 解释Python的切片符号

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

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