2015-05-29 22 views
-1

例如,如果你只命名了一些元素,你如何在列表中找到元素的位置?

在這份名單中,

myFile = ['aweys:5\n', 'baaa: 7\n'] 

如何找到包含「阿維斯」元素以最快的方式,位置,?

我已經試過

if any('aweys' in s for s in myFile) 

,但我不知道如何查找的字符串是該指數在列表中。

+1

你試過循環thr ough和使用'in'運算符?如果不是,你嘗試了什麼? – TigerhawkT3

+0

嗯,首先我發現'aweys'在這個列表中:如果有的話('aweys's在myFile中s)。 – Aweys

+0

但我不知道如何找到包含「阿維斯」手頭只有信息單元的位置,所以不是所有的元素 – Aweys

回答

1
def find(value, array): 
    index = 0 
    for val in array: 
     if value in val: 
      return index 
     index += 1 
    return -1 

這將找到的value第一次出現在array並且如果沒有找到返回的位置或-1

如果你知道值的確切名稱,你可以使用[].index(item_value)

+0

的內容是有你能想到的更快/更簡單的方法? – Aweys

+0

@保羅魯尼創造了一個更簡單的解決方案,如果你熟悉枚舉 – JGerulskis

+1

@Aweys:源代碼可以短一些(見'enumerate'),但該算法不能。您必須訪問所有元素(直到找到匹配的元素),並且必須在那裏查找子字符串。 – dlask

3
for i, val in enumerate(myFile): 
    if 'aweys' in val: 
     print 'aweys is found at index %d' % i 

其他方法來獲得指標和字符串

print filter(lambda s: 'aweys' in s[1], enumerate(myFile)) 
1

對於包含有每個索引元組列表的元組(以如果發現不止一次)和全部值,請嘗試以下操作:

>>> myFile = ['aweys:5\n', 'baaa: 7\n'] 
>>> found = [(i, v) for i, v in enumerate(myFile) if 'aweys' in v] 
>>> print(found) 
[(0, 'aweys:5\n')] 
相關問題