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
答案 0 :(得分: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]
答案 1 :(得分:1)
range()
返回一个列表(在py2.x中),你正在遍历该列表并打印其项目。
>>> range(2,4)
[2, 3]
>>> range(200,210)
[200, 201, 202, 203, 204, 205, 206, 207, 208, 209]
也许你想这样做:
>>> 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