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

时间:2012-01-17 18:13:23

标签: python string char

好的,坚持另一个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 个答案:

答案 0 :(得分:3)

猜测它可能是家庭作业,我们将从一些简单的事情开始。

  1. 您可以使用List Comprehension在Python中创建新列表。

    newList = [item for item in oldList]

  2. 您可以像列表一样索引字符串。这相当于字符串中的.startswith()方法。

    firstChar = inputString[0]

  3. 您可以使用列表参数中的条件来控制新列表中显示的项目。

    newList = [item for item in oldList if <logic test>]

  4. 根据您的评分方式,请记住return新列表,而不是print。如果评分是以自动化的方式完成的,那么差异将会很明显。

  5. 进一步审查您提供的示例代码,看起来您的困难可能就在这一行:

    if stringlist[0] == char:
    

    在这里,您将从传入列表中检索第一个值,而不是您尝试测试的字符串的第一个字符。这足以给你带来麻烦。此外,您可能不想要这一行:

    newlist.append(stringlist)
    

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

    newlist.append(i)
    

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

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

你应该看看Python List Comprehensions。这个“函数”通常用python写成一行。您还想查看the .startswith method of strings

答案 3 :(得分:0)

for i in stringlist遍历您的列表,每个元素都表示为变量i。看看你在循环中测试的内容,看看它是否真的是你要检查的内容。什么是stringlist[0]真的?

答案 4 :(得分:0)

使用mystring.startswith()Check docs

然后使用例如使用startswith过滤列表项的列表理解

答案 5 :(得分:0)

for i in stringlist:
   if stringlist[0] == char:

第二行表示不是查看其中一个字符串的第一个字母,而是查看列表中的第一个字。

答案 6 :(得分:0)

您正在迭代字符串列表,但是如果字符串列表的第一个元素等于char,则检查。您应该在stringlist循环中将i更改为for。 (尽管使用filter()可能更好。