问题描述
["Ford","BMW","Audi","Tesla","Bentley","Chevrolet","Lexus","Mazda","Maserati","Mini"]
然后,如果我想每页打印3个元素(在终端中),我希望得到以下输出
"Ford","Audi" (First page)
"Tesla","Bentley" (Second Page)
"Chevrolet","Mazda" (Third page)
我正在考虑切片,但是我不知道该怎么做。每页的元素数取决于用户输入,对于每个“ x”元素,页面数将加1。我在终端中打印输出。
解决方法
您可以使用for
循环和range(len())
data = ["Ford","BMW","Audi","Tesla","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','Bentley'],['Chevrolet','Lexus','Mazda'],['Maserati','Mini'] ]
现在您可以将其用作pages_data[page]
您也可以使用while
来执行此操作,但这会破坏原始列表
data = ["Ford","Mini"]
page_size = 3
pages_data = []
while data:
pages_data.append(data[:page_size])
data = data[page_size:]
print(pages_data)
结果相同:
[ ['Ford','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,Bentley
3 | Chevrolet,Lexus,Mazda
4 | Maserati,Mini
,
如果您使用的是Linux,则应该可以使用stty -a
查看有关您的终端的信息。在其中的某个地方,您应该看到有多少行。获得此数字后,您可以在脚本中打印的每个rows - n
元素之后打印n
换行符。只要确保您之后没有调整终端的大小即可。如果需要,还可以使用os library(或类似方法)查询行并自动调整要在脚本中打印的换行符的数量。