首页 > 解决方案 > 一次访问数组中的一行

问题描述

假设我有一个字符串矩阵

array = [['hello', 'how', 'are', 'you'],
         ['I', 'am', 'doing', 'okay'],
         ['Okay', 'did','you', 'do', 'your', 'hw','?']]

而且我想每隔一行搜索关键词,因为假设对话中有两个人。

例如,矩阵有 3 行,每奇数行对应人 A,每偶数行对应人 B。

但是,我只关心 A 写了什么,因为我只搜索 A 说的话。

标签: pythonlist

解决方案


这是一个例子。您的问题并没有说明您想对匹配行做什么,但想法是您使用 slice 跳过所有其他行[::2]。这确实会创建列表的副本,因此直接使用索引xrange(0, len(array), 2)可能会更有效(range()在 Python3 中使用)。

keywords = ['did', 'you']

array = [['hello', 'how', 'are', 'you'],
         ['I', 'am', 'doing', 'okay'],
         ['Okay', 'did','you', 'do', 'your', 'hw','?']]

print [line for line in array[::2] if any(key in line for key in keywords)]

推荐阅读