python-3.x - 根据列表中变量的长度查找列表中的索引项
问题描述
我有两个清单:
list_one = ['I', 'walk','on','the','street','','','','']
list_two = ['','','','','','with','my','pajamas','on']
对于这两个列表,我的目标是不同的。对于list_one
我想找到长度大于 0 的最后一项。对于我想找到长度大于 0list_two
的第一个变量的索引。
现在我创建了两个函数:
def index_last_long(sentence):
for index, word in enumerate(sentence):
if len(word) == 0:
return index-1
def index_first_long(sentence):
for index, word in enumerate(sentence):
if len(word) > 0:
return index
这确实有效。但是,我认为必须有其他方法需要更少的代码来执行相同的任务。
谁知道这种方法?
解决方案
你可以这样做:
last = next((i for i, x in enumerate(reversed(list_one)) if len(x) > 0), None)
first = next((i for i, x in enumerate(list_two) if len(x) > 0), None)
如果此类索引不存在,None
则返回。随意修改该值,例如使用-1
或其他东西。
推荐阅读
- python - Opengl (Python) 在单个 VBO 中应用/存储多个纹理以减少绘制调用
- reactjs - 解决承诺后如何重新渲染反应功能组件
- javascript - Video-JS 自动播放属性不起作用
- matlab - matlab无法创建pdf文件
- mysql - 使用 MYSQL Workbench 访问 AWS RDS 上的 MYSQL 日志文件 - WMI 错误
- git - 获取从 master 创建的分支的第一次提交
- tkinter - PyInstaller 可执行文件在使用 Inno 安装后不会运行?
- r - 在具有 POSIXct 格式的日期列的数据框中,与另一列中的特定数字关联的日期是什么?
- rust - 我在 binance 上获得 0 个深度流
- openmdao - 用混合分析策略逼近整个问题