在 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].
这不是我所期望的 - 我的直觉是构造可选参数循环的方式导致了错误 - 但我不明白为什么。
有几个问题。
- 最明显的是在
props
和prose
之间切换。您发布的代码没有 运行.
- 正如其他人评论的那样,如果您在函数调用中使用
*
,则不应使用列表进行调用。您可以改用 seperate_hashtags_from_prose("I like cats","#cats","Rabbits are the best","#Rabbits")
。
hashtags += x
行与您认为的不一样。当您使用 +
作为可迭代对象(例如 list
和 string
)的运算符时,它将连接它们。您可能指的是 hashtags.append(x)
。
我有字符串列表,有些是主题标签 - 比如#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].
这不是我所期望的 - 我的直觉是构造可选参数循环的方式导致了错误 - 但我不明白为什么。
有几个问题。
- 最明显的是在
props
和prose
之间切换。您发布的代码没有 运行. - 正如其他人评论的那样,如果您在函数调用中使用
*
,则不应使用列表进行调用。您可以改用seperate_hashtags_from_prose("I like cats","#cats","Rabbits are the best","#Rabbits")
。 hashtags += x
行与您认为的不一样。当您使用+
作为可迭代对象(例如list
和string
)的运算符时,它将连接它们。您可能指的是hashtags.append(x)
。