python - 在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
andstring
)上用作运算符时,它将连接它们。你可能的意思是hashtags.append(x)
相反。
推荐阅读
- javascript - 使用 Promise all 填充下拉列表
- java - 如何使用spring data jpa删除特定的语句块
- performance-testing - 可以以无代码方式将 Azure 应用程序洞察与现有服务结构集群集成吗?
- vim - VimScript - 即使在缓冲区更改后也始终如一地保存特定位置
- python - 生成 Pandas 数据框的排列
- .net-core - .net 标准兼容性
- java - 我们能知道文本是否水平超出了StaticLayout的边界,单行文本,垂直多行文本
- java - 如何在 Android 上使用桌面后备 URL 构建简短的动态链接?
- go - 使用多个 goroutine 的好处
- javascript - 在输入中搜索会在材料日期选择器中给出不正确的日期,需要将其转换为 UTC