Python - 添加以特定字符开头的字符串列表中的单词

0 投票
7 回答
3532 浏览
提问于 2025-04-17 10:27

好的,我又遇到一个Python的问题了。我试了几次,但就是搞不定。

问题是:实现一个叫做startString( char, stringlist)的函数,它要返回一个列表,这个列表里包含所有以字符char开头的字符串。

startString('s',["simple", "to", "do", "some","things"])

这是我到目前为止尝试的代码,我知道它不管用:

def startString(char, stringlist):
    newlist = []
    for i in stringlist:
        if stringlist[0] == char:
            newlist.append(stringlist)
    print newlist

谢谢大家提供的任何帮助。

7 个回答

1

你应该看看Python 的列表推导式。这个“功能”通常在 Python 中可以用一行代码来写。你还可以了解一下字符串的 .startswith 方法

3

猜测这可能是作业,我们先从一些简单的内容开始。

  1. 你可以用列表推导式在Python中创建新的列表。

    newList = [item for item in oldList]

  2. 你可以像访问列表一样访问字符串中的字符。这和字符串的.startswith()方法是一样的。

    firstChar = inputString[0]

  3. 你可以在列表推导式中使用条件来控制新列表中显示哪些项目。

    newList = [item for item in oldList if <逻辑测试>]

  4. 根据你的评分方式,记得要return新列表,而不是print它。如果评分是自动化的,这个区别会很明显。

仔细查看你提供的示例代码后,看来你可能在这一行遇到了困难:

if stringlist[0] == char:

在这里,你是从传入的列表中获取第一个值,而不是你想要测试的字符串的第一个字符。这就可能导致你遇到的问题。此外,你可能不想要这一行:

newlist.append(stringlist)

这会把整个输入列表放入你的输出列表中。你可能想要的是:

newlist.append(i)

很多这些细节在其他答案/建议中也有提到。

1

试试这个:

def startString(char, stringlist):
    newlist = []
    for string in stringlist:
        if string.startswith(char):
            newlist.append(string)
    print newlist

撰写回答