开发者社区> 问答> 正文

.split()在此代码实例中有什么变化

在练习列表理解时,我偶然发现了这种有趣的情况。我试图打印分配给变量string_1的字符串中少于四个字母的单词。我以为我已经完成了这个简单的代码,然后继续运行它。那时我意识到输出没有改变,<4的条件丝毫没有改变。我寻找一些解决方案,找到了一个。我现在的问题是理解为什么第一个代码不起作用,而第二个代码却起作用,在我看来,它们似乎基本相同。

代码1(失败):

string_1 = "The quick brown fox jumps over the lazy dog"
words = [word for word in string_1 if len(word) < 4]
print("".join(words))

*代码1(输出):*敏捷的棕色狐狸跳过了懒狗

代码2(工作):

string_1 = "The quick brown fox jumps over the lazy dog"
words = [word for word in string_1.split() if len(word) < 4]
print(" ".join(words))

*代码2(输出):*狐狸狗

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 19:07:58 460 0
1 条回答
写回答
取消 提交回答
  • 通过从* Code 1 *中删除if,我们可以看到问题所在:

    string_1 = "The quick brown fox jumps over the lazy dog"
    words = [word for word in string_1]
    print(words)
    

    输出:

    ['T', 'h', 'e', ' ', 'q', 'u', 'i', 'c', 'k', ' ', 'b', 'r', 'o', 'w', 'n', ' ', 'f', 'o', 'x', ' ', 'j', 'u', 'm', 'p', 's', ' ', 'o', 'v', 'e', 'r', ' ', 't', 'h', 'e', ' ', 'l', 'a', 'z', 'y', ' ', 'd', 'o', 'g']
    

    通过遍历字符串,可以得到一个字符一个字符。当然,len('T')`(或其他任何字符)总是小于4,因此您会得到一个空列表。

    拆分时,您会逐字得到。

    回答来源:stackoverflow

    2020-03-24 19:08:08
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多