我对Python很陌生,但我有一个问题,谷歌还没有为我解决。我有一个字符串列表(f_list)。我想生成一个包含特定字符('>')的字符串的列表。
实施例: f_list = ['> EntryA',EntryB,'> EntryC',EntryD]
我想生成: index_list = [0,2]
此代码有效,但我必须为Value输入字符串的确切名称(即> 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)
答案 0 :(得分:3)
>>> [i for i, s in enumerate(f_list) if '>' in s]
[0, 2]
答案 1 :(得分:1)
您可以使用过滤器来查找字符串:
>>> 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')]
答案 2 :(得分: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]