这可能不是一个清晰的解释,但我希望它能阐明这一点。 我正在编写一个代码,以跟踪用户给定输入中使用的单词“ owl”的位置。 我有一个输入,要求用户输入一些包含“ owl”的文本,然后将其设置为小写并分割文本。创建了一个空列表,我从文本中枚举了索引,并附带了一条条件语句,该条件声明如果文本中包含“猫头鹰”一词,则会将其附加到空列表中。继承人的问题,我不知道该如何调用要追加的变量
我尝试了append(index),但是这样做是追加整个索引,而不仅仅是追加owl位置的索引。我知道这是因为如果只存在owl单词的一个实例,计算机将继续进行下一步并附加整个索引。我只需要知道是否有一种方法可以只附加猫头鹰的索引,以便一旦满足if语句(如果单词是owl),它将附加该单词的位置/索引
在这里输入代码
text = input (' enter some text ' )
textsplit = text.split
indexlist = []
for index in enumerate(textsplit):
if 'owl' in textsplit:
indexlist.append(index)
print(indexlist)
答案 0 :(得分:0)
您可以使用list.index(item)
,它提供item
中存在的list
的索引。
来自文档:https://docs.python.org/3/tutorial/datastructures.html
list.index(x [,start [,end]])
在值等于x的第一项列表中返回从零开始的索引。
此外,您还需要调用textsplit=text.split()
,后者将调用split
函数并将值分配给textsplit
textsplit=text.split
将功能split
分配给textsplit
,这不是您想要的
请注意,如果您的字符串中只有一个owl
,则下面的代码将起作用,这意味着它不会处理重复项
text = input (' enter some text ' )
textsplit = text.split()
indexlist = []
if 'owl' in textsplit:
#idx is index of owl in textsplit
idx = textsplit.index('owl')
indexlist.append(idx)
print(indexlist)
输出看起来像
enter some text i owl me
[1]
如果要处理字符串中owl
的重复项,可以执行以下操作
text = input (' enter some text ' )
textsplit = text.split()
indexlist = []
#Iterate on the words of textsplit
for idx, item in enumerate(textsplit):
#If a word matches owl, append it's index to list
if item.lower() == 'owl':
indexlist.append(idx)
print(indexlist)
所以输出看起来像
enter some text i owl u u owl me
[1, 4]
如果我们按以下方式使用list-comprehension
,则上述代码可以大大缩短。该代码与上面的for循环具有相同的功能,但它的表示形式更紧凑,更短
text = input (' enter some text ' )
textsplit = text.split()
indexlist = [idx for idx, item in enumerate(textsplit) if item.lower() == 'owl']
print(indexlist)
答案 1 :(得分:0)
您在这里有许多语法错误,以及变量使用不正确。您也不需要enumerate
。
您可以使用列表理解来尝试这样做:
text = input('enter some text ').split()
indexlist = [i for i in range(len(text)) if text[i] == 'owl']
print(indexlist)
这将返回输入中所有出现的索引。
答案 2 :(得分:0)
如果您能理解,列表理解功能就很强大
text = input (' enter some text ' )
print([i for i, t in enumerate(text.split()) if t.lower() == 'owl'])
如果您对其进行测试...
You are an owl and i am an owl too
Out: [3, 8]