python - 在 python 列表中向后或向前循环以查找匹配项
问题描述
我有一个 python 列表,我将在其中搜索并找到一个术语。一旦我找到它,我需要在列表中后退并找到第一个出现的地方,=
然后继续前进并找到第一个出现的地方;
。
我尝试使用 while 循环,但它不起作用。
extract = [1,2,"3=","fd","dfdf","keyword","ssd","sdsd",";","dds"]
indices = [i for i,s in enumerate(extract) if 'keyword' in s]
for ind in indices:
ind_while_for = ind
ind_while_back = ind
if ('=' in extract[ind]) & (';' in extract[ind]):
print(extract[ind])
if (';' in extract[ind]) & ('=' not in extract[ind]):
while '=' in extract[ind_while_back-1]:
ind_while_back -= 1
print(' '.join(extract[ind_while_back:ind]))
结果要求:3= fd dfdf keyword ssd sdsd ;
解决方案
您可以使用:
l = [1, 2, "3=", "fd", "dfdf", "keyword", "ssd", "sdsd", ";", "dds"]
s = "keyword"
def take(last, iterable):
l = []
for x in iterable:
l.append(x)
if last in x:
break
return l
# get all elements on the right of s
right = take(';', l[l.index(s) + 1:])
# get all elements on the left of s using a reversed sublist
left = take('=', l[l.index(s)::-1])
# reverse the left list back and join it to the right list
subl = left[::-1] + right
print(subl)
['3=', 'fd', 'dfdf', 'keyword', 'ssd', 'sdsd', ';']
推荐阅读
- firefox - 如何使用 firefox 和 chrome 扩展执行对页面可见的脚本
- mysql - MySQL:更新格式不正确的日期时间值
- asp.net-core - 是否可以在不执行重新加载的情况下更改视图内容
- python - 模拟时使用 PID 控制器计算不正确
- c# - 类型“XElement”在未引用的程序集中定义
- python - 在环境中运行 spyder 时“找不到 pythonw.exe 入口点”
- visual-studio-code - emmet 在没有缩写的 VScode 中工作
- python-3.x - 在 MacOS 上运行 odoo-bin 时出现问题(ValueError:当前限制超过最大限制)
- python - 我将如何在我的程序中实现堆栈“返回”系统
- c# - 实体框架 | 序列包含多个匹配元素