2015-06-20 215 views
0

我需要一些帮助,我的代码。我要搜索在数组列表中的元素,当我用这个:搜索列表中的元素列表

program_button = [elem.control for elem in self.program_buttons] 
positions_X = list() 
positions_Y = list() 
for elem in program_button: 
    positions_X.append(elem.getX()) 
    positions_Y.append(elem.getY()) 
posX = map(str, positions_X) 
posY = map(str, positions_Y) 

print posX 

下面是结果:

19:42:50 T:2264 NOTICE: ['25', '375', '723', '1073', '1771', '2120', '2469'] 

我想要的元素723从列表中进行搜索。

你能告诉我一个如何使用名为posX的变量从列表中搜索元素723的例子吗?

回答

1

可以next函数中使用生成器表达式:

>>> next((i for i in posX if i == '723'),None) 
'723' 

这将返回如果它存在,或None如果没有您正在搜索的变量。

如果你要检查这个值的存在,你可以只使用in操作:

if `723` in Posx: 
    #do stuff 

如果你想返回该指数可以用list.index方法有try-except语句处理ValueError或前面的脚本中使用enumerate

>>> next((i for i,j in enumerate(posX) if j == '723'),None) 
2 
2

假设你想在列表中的元素723的索引可以使用:

posX.index('723') 

下面可以,如果该项目恰巧不在列表中使用的便捷功能

def search_item(L,item): 
    try: 
     return L.index(item) 
    except ValueError: 
     return -1 

给它打电话print(search_item(posX,'723'))这将返回2你的情况。
如果该元素不可找到,该函数将返回-1。

+0

非常感谢你为这个,我怎么可以检查使用if语句元素'723'的指数? – Rob

+0

你为什么要这么做?我将编辑我的答案,其他代码示例 – coincoin

+0

以及我想使用它,因为我想检查它是否返回true或不。 – Rob