遍历列表并创建一个数组,显示一行中n的所有序列,然后是列表中的下一个迭代

问题描述 投票:0回答:4

如果有列表,我试图创建一个将遍历列表并创建大小为n的数组的函数。

例如:

[list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]n = 3

运行该函数将生成[0, 1, 2][1, 2, 3][2, 3, 4]

python
4个回答
0
投票

如果要将其编写为函数,则有两个输入:

[input_listn

然后您应该遍历列表,并创建长度为n的子列表,我已经使用列表slices进行了此操作。

def print_list(input_list,n):
    for i in range(len(input_list)):
        if len(input_list[i:i+n])==n:
            print(input_list[i:i+n])

这里有一个示例,您可以找到此程序的输出:

>>> print_list([1,2,3,4,5,6],3)
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]

1
投票

您可以将zip与偏移量增加的列表一起使用:

lst = list(range(11))
n = 3
out = []
for sub in zip(lst[i:] for i in range(n)):
    out.append(list(sub))

由于zip停在最终列表的末尾,因此末尾将没有任何空值。并在一个函数中:

def func(list, n):
    return [[*x] for x in zip(list[i:] for i in range(n))]

0
投票

查看是否适合您:

x=[0,1,2,3,4,5,6,7,8,9,10,11]

def lst(lst, n):
    for x in range(len(lst)-(n-1)):
        print(lst[x:x+n])

lst(x,3)

输出:

[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]
[9, 10, 11]

0
投票

您可以使用列表切片结合列表理解来创建列表列表,并在每次迭代时增加切片的起始位置:

def create_lists(lst, n):
    return [sub for sub in (lst[i:i+n] for i in range(len(lst)-n+1))]

输出:

>>>print(create_lists([0, 1, 2, 3, 4], 3))
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
© www.soinside.com 2019 - 2024. All rights reserved.