2014-09-25 195 views
-4

新行一些元素我有一个列表:在一个新行的等到底打印在蟒蛇

a = ["748","994","530","47","178","908","374","188","88","78","56","93","30", 
    "197","39","0","160","205","69","98","58","55","50","31","19","13","11", 
    "20","20","15","650","175","259","87","193","59","48","47","19","18", 
    "30","14","21"] 

我如何可以用来打印的行头17元,未来17个元素之后?如果有创建函数的可能性,则不与:

print a[:18] 
print[18:36] 
.... 
print [n-17:n+1] 

之后我想将它们转换为数字。

谢谢

回答

1

range接受(可选)startstop,(可选)step参数:

使用,你可以得到启动索引:0,17,34,....

通过使用切片符号,您可以获得所需的子列表。

>>> a = ["748","994","530","47","178","908","374","188","88","78","56","93", ...] 

>>> for i in range(0, len(a), 17): 
...  print a[i:i+17] 
... 
['748', '994', '530', '47', '178', '908', '374', '188', '88', '78', '56', '93', '30', '197', '39', '0', '160'] 
['205', '69', '98', '58', '55', '50', '31', '19', '13', '11', '20', '20', '15', '650', '175', '259', '87'] 
['193', '59', '48', '47', '19', '18', '30', '14', '21'] 

>>> for i in range(0, len(a), 17): 
...  print ' '.join(a[i:i+17]) 
... 
748 994 530 47 178 908 374 188 88 78 56 93 30 197 39 0 160 
205 69 98 58 55 50 31 19 13 11 20 20 15 650 175 259 87 
193 59 48 47 19 18 30 14 21 
0

这可能有助于

print "\n".join(str(a[i:i+17])[1:-1] for i in range(0,len(a),17)) 
0

好像你开始学习Python。我强烈建议寻找“for loops”https://docs.python.org/2/tutorial/controlflow.html#for-statements。另外检查xrange /范围,他们很容易为数字。 xrange和range使用格式范围([start,] end,[[skip]])。范围()和xrange()对于开始是包含的,但是对于结束而言是排他的。括号用于表示可选输入。所以,只提供1个输入实际上意味着范围(0,结束,1)。提供两个输入意味着范围(开始,结束,1)。最后提供3个输入意味着范围(开始,结束,跳过)。另外请记住,xrange仅用于循环,因为它实际上并不生成一个列表,xrange被认为是一个迭代器。的xrange /范围的

例子:

>>> range(10) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> range(5,10) 
[5, 6, 7, 8, 9] 
>>> range(5,10,2) 
[5, 7, 9] 

为了变量转换成不同的类型,你可以投他们。所以,int(n)将n转换成一个整数。同样,str(s)将把所有东西都转换成一个字符串。试图将一个变量转换成它不能的东西将会抛出一个异常。例如:int(“hellow world!”)将不起作用,因为“hello world!”作为一个整数没有意义。

# this function will print out n elements per line 
# use printNElements(a, 17) to print out 17 at a time 
def printNElements(a, n): 
    for index in xrange(0,len(a),n): 
     print a[index:index+n] 

# this converts all the strings in list a to integers 
a = [int(n) for n in a]