2014-09-25 200 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]