2017-07-25 36 views
2

我從python開始。對不起,如果問題是微不足道的。給出從列表中的單詞,我需要找到列表中的所有下一個數字值

我一直在尋找,但我沒有發現任何像我的問題。

給定一個從列表中的單詞,我需要找到第一個單詞,其中至少包含一個來自給定單詞位置的數字。

例如,給定的字= CAR和我的名單是:

ls1 = ['MOTO', 'FREZZE', 'CAR', 'DECIDING', 'LOCAL', 'USING', '4587125', 'JOY', 'CAR', 'YORT', '548H21'] 

我有望迴歸:

ls2 = ['4587125','548H21'] 

我一直在努力,但沒有結果發現... 感謝您的幫助,

我的代碼,

def hasNumbers(inputString): 
return any(char.isdigit() for char in inputString) 

def number_word (character): 
    while not hasNumbers(character): 
    character = [ls1()[i + 1] for i, word in enumerate(ls1()[:-1]) if word == character] 
    if hasNumbers(character): 
     return character 

Marcus

+4

你應該表現出你的代碼,以顯示你正面臨着在自己的實現有什麼困難。 – idjaw

+0

你能告訴我們你想用什麼策略,爲什麼它不起作用?解決這個問題是微不足道的,但我們不應該爲你做功課 – Metareven

+0

@Metareven okey –

回答

3

迭代列表並跟蹤您看過該詞的頻率,然後當您看到一個數字時,就像您之前看過該詞的次數一樣。你可以讓這個發電機:

def get_nums_after(lst, word): 
    seen = 0 
    for x in lst: 
     if x == word: 
      seen += 1 
     if any(c.isdigit() for c in x): 
      while seen > 0: 
       yield x 
       seen -= 1 

例子:

ls1 = ['MOTO', 'FREZZE', 'CAR', 'DECIDING', 'LOCAL', 'USING', '4587125', 'JOY', 'CAR', 'YORT', '548H21'] 
print(list(get_nums_after(ls1, "CAR"))) 
# ['4587125', '548H21'] 
ls2 = ["1", "CAR", "FOO", "2", "3", "CAR", "CAR", "4"] 
print(list(get_nums_after(ls2, "CAR"))) 
# ['2', '4', '4'] 
0
given_word = "CAR" 

words = ['MOTO', 'FREZZE', 'CAR', 'DECIDING', 'LOCAL', 'USING', '4587125', 'JOY', 'CAR', 'YORT', '548H21'] 

required_words = [] 
for i in range(len(words)): 
    if given_word == words[i]: 
     for j in word[i:]: 
      if any(k.isdigit() for k in j) 
       required_words.append(j) 
       break 
print required_words 
0

,你可以這樣做:

>>> ls1 = ['MOTO', 'FREZZE', 'CAR', 'DECIDING', 'LOCAL', 'USING', '4587125', 'JOY', 'CAR', 'YORT', '548H21'] 

找字'CAR'的指標:

>>> ls2=[i for i in range(len(ls1)) if ls1[i]=='CAR'] 
>>> ls2 
[2, 8] 

然後創建開始每個'CAR'ls1的臨時列表,找到包含一個數字的第一個字符串:

>>> ls4=[] 
>>> for i in ls2: 
...  ls3=ls1[i:] 
...  for j in ls3: 
...    if any(char.isdigit() for char in j): 
...      ls4.append(j) 
...      break 
... 
>>> ls4 
['4587125', '548H21'] 
相關問題