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

looping over optional arguments (strings) in 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].

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

有几个问题。

  1. 最明显的是在propsprose之间切换。您发布的代码没有 运行.
  2. 正如其他人评论的那样,如果您在函数调用中使用 *,则不应使用列表进行调用。您可以改用 seperate_hashtags_from_prose("I like cats","#cats","Rabbits are the best","#Rabbits")
  3. hashtags += x 行与您认为的不一样。当您使用 + 作为可迭代对象(例如 liststring)的运算符时,它将连接它们。您可能指的是 hashtags.append(x)