在列表中查找不是其自身值的单个单词位置

时间:2018-08-11 07:02:39

标签: python list python-3.6

我正在尝试在列表中查找特定单词。听起来很简单,我和与之交谈的人都想不出答案。下面是我的问题的一个示例。

list = ['this is ', 'a simple ', 'list of things.']

我想在列表中找到单词"simple",并记下其位置。 (在此示例中也称为list[1]。)

我尝试了几种方法,例如:

try:
  print(list.index("simple"))
except (ValueError) as e:
    print(e)

总是会返回'simple'不在列表中。

关于我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:0)

这是因为list.index函数在列表中搜索精确的“简单”字符串的出现,即它不执行任何子字符串搜索。要完成您的任务,您可以使用in运算符并对列表中的每个字符串进行比较:

my_list = ['this is ', 'a simple ', 'list of things.']


def find_string(l, word):
    for i, s in enumerate(l):
        if word in s:
            return i
    else:
        raise ValueError('"{}" is not in list'.format(word))


try:
    print(find_string(my_list, "simple"))
except ValueError as e:
    print(e)

答案 1 :(得分:0)

您可以遍历列表并检查单词是否在列表项中,并通过创建变量来获取其索引。这是示例代码:

list = ['this is ', 'a simple ', 'list of things.'] #our list
word = "simple"  #specific word
ind = 0  #index
for item in list: #looping through the list
    if word in item: #if the word is in the list item x
        print("'"+item+"',"+str(ind)) #printing the full word and its index separated by comma
    ind += 1 # adding 1 in index

如果找不到该单词,则不会打印任何内容。

答案 2 :(得分:0)

您需要遍历列表中的每个元素,并确定单词是否在列表中。您可以定义一个函数来处理此问题:

def word_check(my_list, word):
    for i in range(0, len(my_list)):
        if word in my_list[i]:
            return i
    return False


list = ['this is ', 'a simple ', 'list of things.']

word_check(list, 'simple')

该函数将返回单词的索引(如果找到),否则将返回false。