3 回答

TA貢獻1872條經(jīng)驗 獲得超4個贊
就個人而言,我認為使用單詞的索引來查找比循環(huán)遍歷列表更容易。
complete_word_list = ['3', 'May', '.', 'Bistritz', '.', 'Left', 'Munich', 'at', '8:35', 'P.', 'M.', ',', 'on', '1st', 'May', ',', 'arriving', 'atVienna', 'early', 'next', 'morning', ';', 'should', 'have', 'arrived', 'at', '6:46', ',', 'but', 'train', 'dracula', 'anhour', 'late']
dracula_list = ['dracula','Dracula']
nearby_words = []
for i in dracula_list:
if i in complete_word_list: #if word was found in list
found_word = complete_word_list.index(i) #returns index of word to find
nearby_words.append(complete_word_list[found_word-1]) #index-1 is the element to the left
if found_word+1 < len(complete_word_list): #include a check to keep indices in range of list
nearby_words.append(complete_word_list[found_word+1]) #index+1 is element to the right
print(nearby_words)
編輯:按照建議,您可以使用try and exceptcatch 來檢查元素是否在列表中 ( ValueError) 或者是否有任何相鄰元素 ( IndexError):
complete_word_list = ['3', 'May', '.', 'Bistritz', '.', 'Left', 'Munich', 'at', '8:35', 'P.', 'M.', ',', 'on', '1st', 'May', ',', 'arriving', 'atVienna', 'early', 'next', 'morning', ';', 'should', 'have', 'arrived', 'at', '6:46', ',', 'but', 'train', 'dracula', 'anhour', 'late']
dracula_list = ['dracula','Dracula']
nearby_words = []
for i in dracula_list:
try:
found_word = complete_word_list.index(i)
nearby_words.append(complete_word_list[found_word-1])
nearby_words.append(complete_word_list[found_word+1])
except (ValueError, IndexError):
print('this is either not in the list of there was not an adjacent element on either side.')
print(nearby_words)

TA貢獻1886條經(jīng)驗 獲得超2個贊
使用enumerate,這樣你就可以得到單詞和相應(yīng)的索引:
for i, word in enumerate(complete_word_list):
if word in dracula_list:
if i:
nearby_words.append(complete_word_list[i-1])
if i < len(complete_word_list) - 1:
nearby_words.append(complete_word_list[i+1])

TA貢獻1835條經(jīng)驗 獲得超7個贊
嘗試這個:
right= [ complete_word_list[complete_word_list.index(i)+1] for i in dracula_list if i in complete_word_list and complete_word_list.index(i)+1<len(complete_word_list)]
left= [ complete_word_list[complete_word_list.index(i)-1] for i in dracula_list if i in complete_word_list and complete_word_list.index(i)-1>=0]
nearby_words = left + right
打印
['train', 'anhour']
添加回答
舉報