嗨朋友我有一个列表,我在那里搜索字符串以及搜索字符串我想获得列表项的下一个元素。以下是示例代码
>>> contents = ['apple','fruit','vegi','leafy']
>>> info = [data for data in contents if 'fruit' in data]
>>> print(info)
['fruit']
我希望输出为 水果 VEGI
答案 0 :(得分:4)
怎么样:
def find_adjacents(value, items):
i = items.index(value)
return items[i:i+2]
如果ValueError
不在value
中,您将免费获得items
个例外情况:)
答案 1 :(得分:0)
这样做的一种方法是迭代自己压缩的列表。
调用zip(contents, contents[1:])
,允许data
变量在循环期间采用这些值:
('apple', 'fruit')
('fruit', 'vegi')
('vegi', 'leafy')
按此顺序。因此,当"水果"已匹配,data
的值为('fruit', 'vegi')
。
考虑这个程序:
contents = ['apple','fruit','vegi','leafy']
info = [data for data in zip(contents,contents[1:]) if 'fruit' == data[0]]
print(info)
我们比较"水果"至data[0]
,data
为('fruit', 'vegi')
时匹配。
答案 2 :(得分:0)
我可能会想到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' in data
),那么这就变得更容易了:
>>> ix = contents.index('fruit')
>>> contents[ix: ix+2]
['fruit', 'vegi']
在这两种情况下,如果找不到匹配的元素,您需要指定应该发生的事情。
答案 3 :(得分:0)
这种直截了当的强制方法对我有用:
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
请注意,您没有指定行为应该是什么:1)没有找到搜索词,或2)在列表末尾找到匹配项。