好的,坚持另一个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
感谢您提供的任何帮助。
答案 0 :(得分:3)
猜测它可能是家庭作业,我们将从一些简单的事情开始。
您可以使用List Comprehension在Python中创建新列表。
newList = [item for item in oldList]
您可以像列表一样索引字符串。这相当于字符串中的.startswith()
方法。
firstChar = inputString[0]
您可以使用列表参数中的条件来控制新列表中显示的项目。
newList = [item for item in oldList if <logic test>]
根据您的评分方式,请记住return
新列表,而不是print
。如果评分是以自动化的方式完成的,那么差异将会很明显。
进一步审查您提供的示例代码,看起来您的困难可能就在这一行:
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()
可能更好。