给出如下列表:
lst = ['abc123a:01234', 'abcde123a:01234', ['gfh123a:01234', 'abc123a:01234']]
有没有办法快速返回以用户定义的字符串开头的所有项目的索引,例如'abc'
?
目前我只能使用以下方式返回完美匹配:
print lst.index('abc123a:01234')
或者通过查找以“abc”开头的所有元素将这些元素保存到新列表并在原始列表中搜索与这些元素完美匹配的所有元素,通过多个步骤执行此操作。
如果唯一快速的方法是使用正则表达式,我怎么能保持用户能够输入匹配内容的灵活性?
答案 0 :(得分:2)
您可以使用以下脚本/方法完成此操作(我承认这是非常原始的):
lst = ['abc123a:01234', 'abcde123a:01234', ['gfh123a:01234', 'abc123a:01234']]
user_in = 'abc'
def get_ind(lst, searchterm, path=None, indices=None):
if indices is None:
indices = []
if path is None:
path = []
for index, value in enumerate(lst):
if isinstance(value, list):
get_ind(value, searchterm, path + [index], indices)
elif value.startswith(searchterm):
indices.append(path + [index])
return indices
new_lst = get_ind(lst, user_in)
>>> print new_lst
[[0], [1], [2, 1]]