所以我有一个数组,我希望复制这个数组中的每个字符串,从它找到一个单词作为条件并以另一个具有相同单词的字符串结束。例如,如果我有一个数组如下:
['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
我希望例如搜索单词循环并将每个字符串复制到一个新数组中,直到它再次找到循环。所以它应该返回一些东西:
['Loop: atfg','xyzgh','blabla','blablable Loop']
感谢任何帮助
答案 0 :(得分:1)
以下代码查找包含my_list = ['trash', 'Loop: 1','2','3','4 Loop', 'more trash']
search_str = "Loop"
start_index = my_list.index(next(e for e in my_list if search_str in e))
end_index = my_list.index(next(e for e in my_list[start_index + 1:] if search_str in e))
result = my_list[start_index:end_index + 1]
wine_rack
要了解如何使用它:
wine_rack[:category]
它可能看起来比多行循环更怪异,但它更多的Python方式:]
答案 1 :(得分:1)
通过yield:
迭代源列表一次i = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
def find_range(items):
start = False
for i in items:
if 'Loop' in i:
yield i
if start:
break
start = True
elif start:
yield i
print list(find_range(i))
答案 2 :(得分:0)
尝试做这样的事情:
list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
if any("loop" in l for l in list):
答案 3 :(得分:0)
遍历列表,查找第一个匹配项,然后是第二个匹配项:
input = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
target = 'Loop'
start_index, end_index = None, None
for i in input:
if target in i:
if start_index is None:
start_index = input.index(i)
continue
end_index = input.index(i)
break
output = input[start_index : end_index + 1]
答案 4 :(得分:0)
列表:
list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
我认为你可以尝试这样做,以便找到数组中的位置:
ixs = [i for i, word in enumerate(list) if word.startswith('Loop') or word.endswith('Loop')]
然后你只需切片列表:
res = list[ixs[0]:ixs[1]+1]
希望这可以帮到你。
答案 5 :(得分:0)
我看到有一些奇特的单线解决方案。 :) 然而,我喜欢看起来更加理解的蛮力的那些:
>>> my_list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
>>> search_str = "(Loop)+"
>>> out = []
>>> count = 0
>>> for s in my_list:
... if count == 2:
... break
... m = re.search(search_str, s)
... if m != None:
... count += 1
... if count >= 1:
... out.append(s)
...
>>> out
['Loop: atfg', 'xyzgh', 'blabla', 'blablable Loop']
>>>