python中可选参数(字符串)的循环

python中可选参数(字符串)的循环,python,optional-arguments,Python,Optional Arguments,我有字符串列表,有些是hashtags,比如#rabbitsarecool,还有一些是短文,比如“我的兔子叫弗雷德” 我已经编写了一个程序来分离它们: def seperate_hashtags_from_prose(*strs): props = [] hashtags = [] for x in strs: if x[0]=="#" and x.find(' ')==-1: hashtags += x

我有字符串列表,有些是hashtags,比如#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].

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

有几个问题

  • 最明显的是在
    道具
    散文
    之间切换。您发布的代码未运行
  • 正如其他人所评论的,如果在函数调用中使用
    *
    ,则不应使用列表进行调用。你可以使用
    将hashtags与散文分开(“我喜欢猫”、“猫”、“兔子是最好的”、“兔子”)
  • hashtags+=x
    的作用与您认为的不同。当您将
    +
    用作iterables(例如
    列表
    字符串
    )上的运算符时,它将连接它们。您的意思可能是
    hashtags.append(x)

  • 就Python而言,您向函数传递了一个参数:列表。将其作为多个参数传入(通过删除括号),或更改函数签名以获得列表。不清楚所需的输出是什么。请在您的帖子中包含当前输出和所需输出。