在python中搜索字符串匹配后,如何从列表中获取下一个元素
嗨,朋友们,我有一个我正在搜索字符串的列表,我想和搜索的字符串一起获得列表项的下一个元素。下面是示例代码在python中搜索字符串匹配后,如何从列表中获取下一个元素,python,Python,嗨,朋友们,我有一个我正在搜索字符串的列表,我想和搜索的字符串一起获得列表项的下一个元素。下面是示例代码 >>> contents = ['apple','fruit','vegi','leafy'] >>> info = [data for data in contents if 'fruit' in data] >>> print(info) ['fruit'] 我想把输出作为 水果 vegi实现这一点的一种方法是迭代压缩的列表 调用z
>>> contents = ['apple','fruit','vegi','leafy']
>>> info = [data for data in contents if 'fruit' in data]
>>> print(info)
['fruit']
我想把输出作为
水果
vegi实现这一点的一种方法是迭代压缩的列表 调用
zip(contents,contents[1:])
,允许data
变量在循环期间采用以下值:
('apple', 'fruit')
('fruit', 'vegi')
('vegi', 'leafy')
按这个顺序。因此,当匹配“水果”时,数据
具有值('fruit','vegi')
考虑一下这个计划:
contents = ['apple','fruit','vegi','leafy']
info = [data for data in zip(contents,contents[1:]) if 'fruit' == data[0]]
print(info)
我们将“水果”与
数据[0]
进行比较,当数据为('fruit','vegi')
,时,两者将匹配。我可能会想到itertools
>>> import itertools
>>> contents = ['apple','fruit','vegi','leafy']
>>> icontents = iter(contents)
>>> iterable = itertools.dropwhile(lambda x: 'fruit' not in x, icontents)
>>> next(iterable)
'fruit'
>>> next(iterable)
'vegi'
请注意,如果您确实知道您有一个精确的匹配项(例如,'fruit'==data
,而不是数据中的'fruit',这将变得更容易:
>>> ix = contents.index('fruit')
>>> contents[ix: ix+2]
['fruit', 'vegi']
在这两种情况下,您都需要指定如果找不到匹配的元素应该发生什么情况。这种简单的命令式方法对我很有效:
contents = ['apple', 'fruit', 'vegi', 'leafy']
result = '<no match or no successor>'
search_term = 'fruit'
for i in range(len(contents)-1):
if contents[i] == search_term:
result = contents[i+1]
print result
contents=['apple'、'fruit'、'vegi'、'leafy']
结果=“”
搜索项='水果'
对于范围内的i(长度(内容)-1):
如果内容[i]==搜索项:
结果=内容[i+1]
打印结果
请注意,您没有指定1)找不到搜索词,或2)在列表末尾找到匹配项时的行为。关于:
def find_adjacents(value, items):
i = items.index(value)
return items[i:i+2]
如果值
不在项中
:)旁边:在示例中,在数据
中使用'fruit'可以匹配其中包含单词fruit
的任何字符串,那么您将免费获得一个值错误
异常。所以它也可以搭配“水果”和“百香果”。还是你的意思是“水果”==数据?我正在寻找精确匹配的水果谢谢。您能告诉我为什么要保留数据[0]吗?这将存储为元组吗?