如果有列表,我试图创建一个将遍历列表并创建大小为n的数组的函数。
例如:
[list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
与n = 3
运行该函数将生成[0, 1, 2]
,[1, 2, 3]
,[2, 3, 4]
等
如果要将其编写为函数,则有两个输入:
[input_list
和n
然后您应该遍历列表,并创建长度为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]
您可以将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))]
查看是否适合您:
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]
您可以使用列表切片结合列表理解来创建列表列表,并在每次迭代时增加切片的起始位置:
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]]