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