我有一个包含数百个整数的列表。从列表的开头开始,我需要一次取34个整数,并在34个单独的行中打印整数。
问题是我必须使用多个print (list[x:y])
并不断更改x和y的值。
我尝试指定要打印的列表中的每个索引,但是,由于列表可能包含数百个值,因此这是不切实际的。
integer = [
3,23,12,34,2,4,7,11,14,1,9,17,12,1,0,5,4,3,2,4,8,1,12,15,18,17,14,23,12,0,0
,12,34,2,21,22,24,23,1,0,4,7,3,13,16,15,3,5,11,22,9,14,20,16,3,6,2,0,10,1,12
,18,9,9,23,6,2,18,14,1,0,3,5,17,13,12,5,6,9,0,1,2,19,20,2,3,5,7,15,19,2,4,10
,15,18,17,2,6,5,3,6,12,15,18,12,15,6,20,0,9,4,1,5,4,3,7,9,0,12,3,5,7,8,17,19
,21,0,1,2,7,7,7,5,4,3,8,19,12,16,0,2,4,7,8,4,12,12,9,3,20,2,21,3,5,8,9,12,17
,8,7,3,4,6,3,14,18,21,4,3,9,19,19,3,6,8,7,13,14,18,13,15,3,4,8,7,12
]
print (integer[0:34])
print (integer[35:69])
print (integer[70:104])
输出:
[3, 23, 12, 34, 2, 4, 7, 11, 14, 1, 9, 17, 12, 1, 0, 5, 4, 3, 2, 4, 8, 1, 12, 15, 18, 17, 14, 23, 12, 0, 0, 12, 34, 2]
[22, 24, 23, 1, 0, 4, 7, 3, 13, 16, 15, 3, 5, 11, 22, 9, 14, 20, 16, 3, 6, 2, 0, 10, 1, 12, 18, 9, 9, 23, 6, 2, 18, 14]
[0, 3, 5, 17, 13, 12, 5, 6, 9, 0, 1, 2, 19, 20, 2, 3, 5, 7, 15, 19, 2, 4, 10, 15, 18, 17, 2, 6, 5, 3, 6, 12, 15, 18]
答案 0 :(得分:0)
假设您的预期输出没有故意跳过所示的值,则以下内容将在一行中打印34个元素的组:
wholeLines = len(integer) // 34 * 34
for i in range( 0,wholeLines,34 ):
print(integer[i:i+34])
print( integer[wholeLines:] )
如果您不需要打印出最后一行的其余部分,则可以省略最后一行代码。
答案 1 :(得分:0)
如果您正在寻找一种简单的方法来打印列表大小为chunk_size
的块,请使用以下单行列表理解:
[print(data[chunk_size * index : chunk_size * index + chunk_size]) for index in range((len(data) // chunk_size) + 1)]
更改chunk_size
以表示您希望块多大。
示例:
In[2]: x = list(range(35))
In[3]: x
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]
In[4]: chunk_size = 9
In[5]: [print(x[chunk_size * index : chunk_size * index + chunk_size]) for index in range((len(x) // chunk_size) + 1)]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[9, 10, 11, 12, 13, 14, 15, 16, 17]
[18, 19, 20, 21, 22, 23, 24, 25, 26]
[27, 28, 29, 30, 31, 32, 33, 34]
答案 2 :(得分:0)
因此,您希望迭代地使用34个元素-我假设即使没有完整的34个元素,也要打印列表的最后一个元素。这里使用的工具是Loop。在该for循环内,您希望基于当前索引打印34个元素,如下所示:
print intlist(n:n+34)
好的,所以您的迭代限制。最简单的方法是使用do-while循环(并记住在每个循环中增加索引变量):
n=0
while n < len(intlist):
print intlist(n:n+34)
n += 34
但是这里有一个错误。它不会打印列表的最后一部分-因为您将得到一个IndexOutoFRange
异常(当n + 34太大时)。要解决此问题,您可以将其包装在try-except块中,该块将通过打印到列表的末尾来处理特殊情况:
n=0
while n < len(intlist):
try:
print intlist(n:n+34)
except:
print intlist(n:)
n += 34