gpt4 book ai didi

python - 为什么我的代码打印出 18 而不是 10,您能提供任何解决方案吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:04 25 4
gpt4 key购买 nike

我对 python 比较陌生,刚开始在学校学习,我们被要求完成一个任务,它要求你得到一个句子并将其转化为单词列表。

例如:'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY' 将重新创建为 [1, 2, 3, 4, 5, 6, 7, 8, 9 , 1, 3, 9, 6, 7, 8, 4, 5]

但是这个例子并没有显示如果你在末尾添加一个新词会发生什么,我的老师要求我在使用这个例子时让最后一个词显示为“10”。

例如:“不要问你的国家能为你的国家做什么,而要问你能为你的国家马铃薯做什么”。在我的代码中,它输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 9, 6, 7, 8, 4, 5, 18]

我的问题很简单:

为什么代码要这样做,为什么不将其打印为 10 而不是 18?

您是否可以对我的代码进行任何潜在的修改,并可能向我展示并解释它是如何工作的?

以下是我正在使用的代码。

sentence = input("Please input a sentence that you want to find the locations of all words: ")
words = sentence.split()
print([words.index(s)+1 for s in words])

最佳答案

在你的句子中,列表变成:

['ASK', 'NOT', 'WHAT', 'YOUR', 'COUNTRY', 'CAN', 'DO', 'FOR', 'YOU', 'ASK', 'WHAT', 'YOU', 'CAN', 'DO', 'FOR', 'YOUR', 'COUNTRY', 'POTATO']

POTATO 是第 18 个元素。您应该创建一个没有重复项的新列表:

singles = []
for word in words:
if word not in singles:
singles.append(word)

然后您可以使用 singles.index(word) 代替 words.index(word)。更好的是:

used = {}
index = 0
for word in words:
if word in used:
print(used[word])
else:
index += 1
print(index)
used[word] = index

是的,它更长,但效率更高。

关于python - 为什么我的代码打印出 18 而不是 10,您能提供任何解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com