Python:需要帮助搜索子字符串列表吗

Python:需要帮助搜索子字符串列表吗,python,python-3.x,list,for-loop,Python,Python 3.x,List,For Loop,我知道这是一个简单的问题,但我有一个充满数百个字符串的列表,我需要帮助选择其中一些字符串。例如,列表为: lines = ["First Sentence dog", "Second Sentence dog", "Third Sentence cat", "Fourth Sentence cat"...] 我需要访问和操作包含单词dog的索引。到目前为止,我掌握的代码是: for line in rang

我知道这是一个简单的问题,但我有一个充满数百个字符串的列表,我需要帮助选择其中一些字符串。例如,列表为:

lines = ["First Sentence dog", "Second Sentence dog", "Third Sentence cat", "Fourth Sentence cat"...]
我需要访问和操作包含单词dog的索引。到目前为止,我掌握的代码是:

    for line in range(len(lines)):
        if "dog" in line:
            # Do some something
        elif "cat" in line:
            # Do some something else
        else:
            # Do other things
谢谢你的帮助

编辑:我得到的错误是 TypeError:类型为“int”的参数不可编辑

具体来说,我的问题是:如何通过搜索整个字符串中的特定子字符串来检索和处理整个字符串

lines = [
    "First Sentence dog",
    "Second Sentence dog",
    "Third Sentence cat",
    "Fourth Sentence cat",
]


for index, line in enumerate(lines[:]):
    if "dog" in line:
        lines[index] = "Do Something"
    elif "cat" in line:
        lines[index] = "Do some something else"
    else:
        lines[index] = "Do other things"

print(lines)
输出:
您必须使用索引来访问列表中的字符串

for line in range(len(lines)):
    if "dog" in lines[line]:
        # Do some something
    elif "cat" in lines[line]:
        # Do some something else
    else:
        # Do other things
您可以使用:

enumerate将允许您在当前元素的索引上迭代一个iterable。如果不需要索引,只需:

for line in lines:
    if "dog" in line:
        # Do some something
    elif "cat" in line:
        # Do some something else
    else:
        # Do other things

你可以试试地图功能

首先定义可以执行某些操作的函数:

def change(string):
     if string = 'dog':
         #do something
     else:
         #do something
然后尝试map函数。如果希望输出为列表,则:

list(map(change,lines))

如果您需要对这些行执行一些操作,那么您可以考虑首先将它们收集到一个列表中,然后对它们应用一些函数。一种方法可以是:

dog_strings = [x for x in lines if 'dog' in x]
edited_dog_strings = map(some_function, dog_strings)
然后,您可以将函数应用于此列表中的所有元素,如下所示:

dog_strings = [x for x in lines if 'dog' in x]
edited_dog_strings = map(some_function, dog_strings)

因此,现在您的代码由两行组成,它可能比for循环更有效。

很高兴您展示了您的努力和迄今为止的代码!你现在的问题是什么,你的帖子不包含任何…:请注意,对于RangeLines中的line,lines将使line成为要迭代的索引,而对于line in lines,line将使line成为实际字符串。你可能对枚举感兴趣-您需要RangeLines中的行,这是一个整数序列。所以line是一个整数,而不是字符串。所以狗不可能在里面。您可以通过将printline放在循环的顶部来立即捕捉到这一点。