2013-09-29 36 views
1
array = [2,3,2,4,7,9] 
for a in range(2,4): 
    print a 

2 
3 

這就是我想要的,僅在窄範圍內打印數字。但是我需要使用的數字要大得多。當我用大數字嘗試同樣的事情時,我會得到一些其他的東西。例如:使用較大整數的Python 2.7數組範圍無法正常工作

array = [22,57,205,276,476] 

for a in range(200,210): 
    print a 

200 201 202 202 203 204 205 206 207 208 209 

這不是我想要的。我預計只能得到205.顯然,我使用更大的數字改變了我的程序的行爲。我怎麼才能得到205?

謝謝,波多黎各

+1

您需要閱讀'range()'[documentation](http://docs.python.org/2/library/functions.html#range)。你清楚地認爲它做了一些沒有的事情。 – kindall

+0

即使不知道'range()'做了什麼,你的代碼應該會引發一些紅旗。 for循環如何知道應該查看的列表?爲了做它你想做的事情,你必須在某處指定'array'變量。 – kevinsa5

回答

1

range()返回一個列表(py2.x)和你遍歷該列表並打印其項目。

>>> range(2,4) 
[2, 3] 
>>> range(200,210) 
[200, 201, 202, 203, 204, 205, 206, 207, 208, 209] 

文檔:for Statements

也許你想做到這一點:

>>> array = [22,57,205,276,476] 
# `item` is assigned the values from the list during loop. 
>>> for item in array: 
...  if 200 <= item < 210: #Equivalent to `item >=200 and item <210` 
...   print item 
...   
205 

而在你的第一個例子看,你可能還需要使用set保持已打印項目的軌跡:

>>> array = [2,3,2,4,7,9] 
>>> seen = set() 
>>> for item in array: 
...  if 2 <= item < 4 and item not in seen: 
...   print item 
...   seen.add(item) 
...   
2 
3 
3

你只是在tho中打印所有的值而不是數組元素。第一個工作只是巧合,你有數組中的23

如果你想打印在一定範圍內的數組元素,那麼你有一個循環做到這一點:

rng = range(200, 210) 

for elem in array: 
    if elem in rng: 
     print elem 

,或者用一個列表理解:

[elem for elem in array if elem in rng] 

您也可避免創建一個新的範圍列表。只需使用比較運算符檢查邊界:

[elem for elem in array if 200 <= elem < 210] 
+0

是的,那可行!謝謝hcwhsa和Rohit,你們是最棒的! – Rico

+0

@Rico接受對你最有幫助的答案被認爲是一種好的做法。 – SethMMorton