使用较大整数的Python 2.7数组范围无法正常工作

时间:2013-09-29 16:38:44

标签: python arrays range

array = [2,3,2,4,7,9]  
for a in range(2,4):
    print a

2
3

这就是我想要的,只是在一个狭窄范围内打印的数字。但我需要使用的数字要大得多。当我用更大的数字尝试相同的东西时,我会得到一些其他的东西。例如:

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?

谢谢,Rico

2 个答案:

答案 0 :(得分:3)

您只是打印这些范围内的所有值,而不与数组元素进行比较。第一个工作只是巧合,你在数组中同时拥有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]

答案 1 :(得分: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