1

我对 Python 很陌生,但我遇到了一个 Google 尚未为我解决的问题。我有一个字符串列表(f_list)。我想生成包含特定字符('>')的字符串的索引列表。

示例:f_list = ['>EntryA', EntryB, '>EntryC', EntryD]

我想生成: index_list = [0, 2]

此代码有效,但我必须为值输入字符串的确切名称(即>EntryA)。如果我输入“>”(如下面的代码示例所示),它在 index_list 中不返回任何值。

    f_list = ['>EntryA', 'EntryB', '>EntryC', 'EntryD']
    index_list = []

    def all_indices(v, qlist):
        idx = -1
        while True:
            try:
                idx = qlist.find(v, idx+1)
                index_list.append(idx)
            except ValueError:
                break
        return index_list

    all_indices('>', f_list)
    print(index_list)
4

3 回答 3

3
>>> [i for i, s in enumerate(f_list) if '>' in s]
[0, 2]
于 2013-07-14T02:41:25.027 回答
2

您可以使用过滤器来查找字符串:

>>> f_list = ['>EntryA', 'EntryB', '>EntryC', 'EntryD']
>>> filter(lambda s: '>' in s, f_list)
['>EntryA', '>EntryC']

或者使用列表推导来查找索引:

>>> [i for i, s in enumerate(f_list) if '>' in s]
[0, 2]

或者您可以通过以下任一方式找到两者:

>>> filter(lambda s: '>' in s[1], enumerate(f_list))
[(0, '>EntryA'), (2, '>EntryC')]

>>> [(i, s) for i, s in enumerate(f_list) if '>' in s]
[(0, '>EntryA'), (2, '>EntryC')]
于 2013-07-14T02:30:15.953 回答
0

如果您曾经使用过索引,那么enumerate()您的功能是:

>>> f_list = ['>EntryA', 'EntryB', '>EntryC', 'EntryD']
>>> for i, j in enumerate(f_list):
...     if '>' in j:
...         print i
... 
0
2

在一个函数中:

>>> def all_indices(v, qlist):
...     return [i for i, j in enumerate(f_list) if '>' in j]
...
>>> all_indices('>', f_list)
[0, 2]
于 2013-07-14T02:29:26.207 回答