3 回答
TA贡献1872条经验 获得超3个赞
就个人而言,我认为使用单词的索引来查找比循环遍历列表更容易。
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条经验 获得超2个赞
使用enumerate,这样你就可以得到单词和相应的索引:
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条经验 获得超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']
添加回答
举报