我有一个字符串数组:
["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
我需要在此向量中搜索一些字符串,但只搜索第一部分。例如,我需要以"aaa"
开头的字符串的位置(在这个例子中,它将是0和1)。
我该怎么做?
答案 0 :(得分:2)
您可以将list comprehension与enumerate
和str.split
:
>>> lst = ["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
>>> [x for x,y in enumerate(lst) if y.split()[0] == "aaa"]
[0, 1]
>>>
y.split()[0]
将在空格上拆分字符串并返回第一个元素。因此:
if y.split()[0] == "aaa"
仅检查每个字符串的第一部分。但是,如果字符串总是像示例中给出的那样,那么简单的in
membership test就足够了:
[x for x,y in enumerate(lst) if "aaa" in y]
答案 1 :(得分:2)
>>> l = ["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
>>> print [ind for ind, ele in enumerate(l) if ele.startswith("aaa")]
[0, 1]
ind
是列表中每个元素的索引,ele
是每个元素,因此如果字符串以“aaa”开头,我们将索引添加到列表中
如果你没有机会在字符串的后半部分中使用"aaa"
,或者使用in只使用上半部分的子字符串将是最有效的
[ind for ind, ele in enumerate(l) if "aaa" in ele]
答案 2 :(得分:0)
你有一个清单。要浏览每个项目,您可以:
for eachlistitem in listname:
if eachlistem[:3] == "ABC": #this only checks first three char of current list item
##do something here like increment a counter
##add counter # to new list to have a list of locations