首页 > 解决方案 > 在python中循环可选参数(字符串)

问题描述

我有字符串列表,有些是主题标签——比如#rabbitsarecool,还有一些是简短的散文,比如“我的兔子名字是弗雷德”。

我写了一个程序来分离它们:

def seperate_hashtags_from_prose(*strs):
    props    = []
    hashtags = []
    for x in strs:
        if x[0]=="#" and x.find(' ')==-1:
            hashtags += x
        else:
            prose    += x
    return hashtags, prose

seperate_hashtags_from_prose(["I like cats","#cats","Rabbits are the best","#Rabbits"])

这个程序不起作用。在上面的示例中,当我调试它时,它告诉我在第一个循环中:

x=["I like cats","#cats","Rabbits are the best",#Rabbits].

这不是我所期望的——我的直觉是关于可选参数的循环的构造方式会导致错误——但我不明白为什么。

标签: pythonoptional-arguments

解决方案


有几个问题。

  1. props最明显的是在和之间切换prose。您发布的代码没有运行。
  2. 正如其他人评论的那样,如果您*在函数调用中使用,则不应使用列表进行调用。你可以seperate_hashtags_from_prose("I like cats","#cats","Rabbits are the best","#Rabbits")改用。
  3. 这条线hashtags += x没有做你认为它做的事情。当您+在可迭代对象(例如listand string)上用作运算符时,它将连接它们。你可能的意思是hashtags.append(x)相反。

推荐阅读