在练习列表理解时,我偶然发现了这种有趣的情况。我试图打印分配给变量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
通过从* 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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。