2015-06-20 214 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