首页 > 解决方案 > 将数组拆分为多个部分以进行分页

问题描述

假设我有一个数组:

["Ford","BMW","Audi","Tesla","BMW","Bentley","Chevrolet","Lexus","Mazda","Maserati","Mini"]

那么如果我想每页打印 3 个元素(在终端中),我期待以下输出

"Ford","BMW","Audi" (First page) 
"Tesla","BMW","Bentley" (Second Page)
"Chevrolet","Lexus","Mazda" (Third page)

我正在考虑切片,但我不知道该怎么做。每页的元素数取决于用户输入,对于每个“x”元素,页数将加 1。我正在终端中打印输出。

标签: pythonlistslice

解决方案


您可以使用for-loop 和range(len())

data = ["Ford","BMW","Audi","Tesla","BMW","Bentley","Chevrolet","Lexus","Mazda","Maserati","Mini"]

page_size = 3

pages_data = []

for i in range(0, len(data), page_size): 
    pages_data.append(data[i:i+page_size])

print(pages_data)

结果:

[ ['Ford', 'BMW', 'Audi'], ['Tesla', 'BMW', 'Bentley'], ['Chevrolet', 'Lexus', 'Mazda'], ['Maserati', 'Mini'] ]

现在您可以将其用作pages_data[page]


您也可以这样做,while但它会破坏原始列表

data = ["Ford","BMW","Audi","Tesla","BMW","Bentley","Chevrolet","Lexus","Mazda","Maserati","Mini"]

page_size = 3

pages_data = []

while data:
    pages_data.append(data[:page_size])
    data = data[page_size:]

print(pages_data)

结果相同:

[ ['Ford', 'BMW', 'Audi'], ['Tesla', 'BMW', 'Bentley'], ['Chevrolet', 'Lexus', 'Mazda'], ['Maserati', 'Mini'] ]

在这两个你可以做

print('total pages:', len(pages_data))

for number, data in enumerate(pages_data, 1):
    print(number, "|", ", ".join(item))

结果:

total pages: 4

1 | Ford, BMW, Audi 
2 | Tesla, BMW, Bentley
3 | Chevrolet, Lexus, Mazda 
4 | Maserati, Mini 

推荐阅读