python - 在列表理解中理解这个 if 语句
问题描述
在下面的代码中,
splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [L + R[1:] for L, R in splits if R]
对于给定的单词,if R
最后一个列表理解中的含义是什么?
如果 RL+R[1:]
中的每个L,R
组合返回什么?splits
存在吗?这是必要的检查吗?
解决方案
你可以看看(假设你的词是一个字符串):
word = 'my_word'
print([(word[:i], word[i:]) for i in range(len(word) + 1)])
输出:
[('', 'my_word'),
('m', 'y_word'),
('my', '_word'),
('my_', 'word'),
('my_w', 'ord'),
('my_wo', 'rd'),
('my_wor', 'd'),
('my_word', '')]
你可以看到你的最后一个元素有一个空字符串,如果你不检查你的 R,因为你正在使用 slicing(R[1:]),你会得到:IndexError: string index out of range
,所以是的,有必要在这种情况下检查
if R
是检查在列表理解中发生的方式,与普通 if 语句中的逻辑相同。
您可以在这里查看更多关于列表理解中的 if/else 的信息
推荐阅读
- asp.net - 如何登录我的 Angular 前端应用程序之一,然后导航到其他前端应用程序而无需再次要求身份验证
- c# - Directory.GetFiles 搜索模式返回无效结果
- python - Speech_recognition 模块 python 在 Windows 上更好
- python - 字符串匹配返回不匹配的默认值
- python - Pandas:根据目标分布从 DataFrame 中采样
- php - 如何将数据从控制器保存到一个地方。那么,我可以将它用于 Laravel 中的所有控制器或视图吗?
- python-3.x - 如何计算Python数据框中段落中每个句子中特定单词的出现次数
- c++ - c++ libcurl和SSL设置https读取文件
- javascript - 摆脱 Javascript 中的拒绝承诺递归
- macos - MacOS 通过复制应用软件安装构建