Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印列表中重复出现的单词的位置_Python_Python 2.7 - Fatal编程技术网

Python 打印列表中重复出现的单词的位置

Python 打印列表中重复出现的单词的位置,python,python-2.7,Python,Python 2.7,我需要找出单词在句子中的位置。但是如果句子中有重复出现的单词,它会打印单词第一次出现的位置。例如,我希望程序执行以下操作: sentence = 'Ask Not What Your Country Can Do For You Ask What You Can Do For Your Country' recurringword = ['Ask', 'Not', 'What', 'Your', 'Country', 'Can', 'Do', 'For', 'You'] pos = [0,

我需要找出单词在句子中的位置。但是如果句子中有重复出现的单词,它会打印单词第一次出现的位置。例如,我希望程序执行以下操作:

sentence = 'Ask Not What Your Country Can Do For You Ask What You Can Do For Your Country'

recurringword = ['Ask', 'Not', 'What', 'Your', 'Country', 'Can', 'Do', 'For', 'You']

pos = [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 8, 5, 6, 7, 3, 4]
我的代码:

sentence = 'Ask Not What Your Country Can Do For You Ask What You Can Do For Your Country'

print sentence
words_into_list = sentence.split(" ")

recurring_word = 'Ask'

word = ""
word_list=[]


for i in range(len(words_into_list)):
if words_into_list[i] in word_list:

    print "Not A Unique Word"
else:
    word_list.append(words_into_list[i])
print word_list

您可以反复浏览句子中的每个单词,找到该单词第一次出现的位置:

sentence = 'Ask Not What Your Country Can Do For You Ask What You Can Do For Your Country'

words = sentence.split(" ")

[(i for i,v in enumerate(words) if (v == word)).next() for word in words]
# => [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 2, 8, 5, 6, 7, 3, 4]
快速解释: 外部循环是一个用于理解的循环,循环遍历列表中的每个单词:

[... for word in words]
内部循环提取列表中与给定字符串匹配的索引词,然后使用
next
获取第一次出现的索引

(i for i,v in enumerate(words) if (v == word)).next()
当我们把它们放在一起时,我们得到嵌套循环,循环遍历列表中的每个单词,并为每个单词提取其第一次出现的位置

此外,不必寻找重复出现的单词来解决此问题,但如果有其他必要:

recurring_words = set([word for word in words if words.count(word) > 1])