如何从索引未知的列表中追加str

时间:2019-05-03 02:52:37

标签: python

这可能不是一个清晰的解释,但我希望它能阐明这一点。 我正在编写一个代码,以跟踪用户给定输入中使用的单词“ 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)

3 个答案:

答案 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]