我需要能够将点列表分割成多个子列表,以作为分割另一个列表的指南。
a = 1 # just an example
b = 2 # just an example
c = 3 # just an example
# My list right now
y_vals = [a, a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b, c, c, c, c, c]
我需要它在每次数字变化时进行切片。 a
、b
和c
是实际的数字,但是数字比较长,所以我用a,b打出来, c
.
我想使用[:x]
的切片方法,但它是一个5000多个数字的列表,我不知道如何对列表进行切片。预先感谢您!
最佳答案
如果您只想获取仅具有相同编号的子列表,则不必费心进行切片。一个好的方法是 itertools.groupby
:
from itertools import groupby
li = [3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2]
for _, group in groupby(li):
print(list(group))
输出
[3, 3, 3, 3, 3, 3]
[1, 1, 1, 1, 1]
[2, 2]
编辑从这里到您所需的列表列表是一个简单的单行:
output = [list(group) for _, group in groupby(li)]
print(output)
输出
[[3, 3, 3, 3, 3, 3], [1, 1, 1, 1, 1], [2, 2]]
关于python - 当元素与前一个元素不同时,按整数切片列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297009/