1
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?

谢谢, 里科

4

2 回答 2

3

您只是打印这些范围内的所有值,而不与数组元素进行比较。第一个工作只是一个巧合,您在阵列中同时拥有2和。3

如果要打印特定范围内的数组元素,则必须使用循环:

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]
于 2013-09-29T16:42:11.743 回答
1

range()返回一个列表(在 py2.x 中),您正在迭代该列表并打印其项目。

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

文档:for声明

也许你想这样做:

>>> 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

查看您的第一个示例,您可能还想使用 aset来跟踪已打印的项目:

>>> 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
于 2013-09-29T16:42:11.117 回答