为了账号安全,请及时绑定邮箱和手机立即绑定

将列表的元素附加到迭代器的左侧或右侧到另一个列表

将列表的元素附加到迭代器的左侧或右侧到另一个列表

红颜莎娜 2021-10-26 15:29:00
您可以使用在每次迭代中都会发生变化的变量;看到这个:->>> list1 = [ 'a', 'b', 'c', 'd' ]>>> >>> var, list2 = 0, []>>> for i in list1:...     filename = 'file{}'.format(var)...     var += 1...     list2.append(filename)... >>> list2['file0', 'file1', 'file2', 'file3']
查看完整描述

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)


查看完整回答
反对 回复 2021-10-26
?
MM们

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])


查看完整回答
反对 回复 2021-10-26
?
qq_花开花谢_0

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']


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信