【发布时间】:2014-06-05 18:06:59
【问题描述】:
假设你有一个数组p:
p=[['0', '9', '10', '13'], ['1', '8', '10', '14'],
['2', '7', '9', '15'], ['3', '2', '8', '18'],
['4', '1', '7', '19'], ['5', '1', '2', '20'],
['6', '2', '4', '21'], ['7', '1', '3', '22'],
['8', '4', '6', '25'], ['9', '3', '5', '26'],
['10', '5', '6', '27'], ['11', '8', '10', '28'],
['12', '7', '9', '31'], ['13', '1', '2', '32'],
['14', '4', '6', '33'], ['15', '3', '5', '34']]
我有兴趣了解基于部分字符串的元素索引,该部分字符串应始终与 p 中位于 [1] 和 [2] 的元素匹配(在 p 中,这将是 9,10,@987654329 @、7,9、2,8 等)。例如,我想知道包含部分字符串'1','2' 的元素的索引。在这种情况下,索引应该是:[5,13],对应于元素:
['5', '1', '2', '20']
['13', '1', '2', '32']
我在 stackoverflow 中发现了这个相关问题:python - find index postion in list based of partial string。但是,当我尝试仅使用 2 作为部分字符串时,我得到了以下结果(非常完美):
>>> indices = [i for i, s in enumerate(p) if '2' in s]
>>> indices
[2, 3, 5, 6, 13]
>>>
但是,如果我尝试使用 ('1','2'),我什么也得不到:
>>> indices = [i for i, s in enumerate(p) if ('1','2') in s]
>>> indices
[]
我应该如何在if 中写入部分字符串以便此代码工作?我真的不明白为什么它不起作用。如果有人可以帮助我理解这一点,我会很高兴。我尝试过:将部分字符串放在[] 之间,将其定义为条件之前的数组,这也不起作用。还有其他方法可以完成相同的任务吗?因为我知道仅使用上面提到的链接中提供的代码不会在[1] 和[2] 位置搜索匹配项。
【问题讨论】:
标签: python arrays string indexing partial