Python中如何查找指定字符串在列表中的位置?
查找列表指定值的实现方案
你在for循环写法里的认知偏差很好修正:for x in 列表的语法中,x本身就是当前遍历到的列表元素,不需要额外获取currentValueOfList变量。另外Python提供了内置的查找方法,不需要手写循环也能快速实现需求。
方法1:使用内置index()方法(最简实现)
列表自带的index()方法会直接返回目标值在列表中第一次出现的索引位置,拿到索引后即可直接取到对应值:
# *注意:不要使用`list`作为自定义变量名,它是Python内置的列表类名,直接赋值会覆盖内置方法,导致后续代码报错 my_list = ["a", "b", "c"] valueIWantToFind = "b" # 获取目标值对应的索引 target_index = my_list.index(valueIWantToFind) # 赋值对应位置的值 variable = my_list[target_index]
注意:如果目标值不在列表中,
index()会直接抛出ValueError,如果无法提前确认目标值是否存在,需要先做存在性校验。
适配值不存在场景的写法:
my_list = ["a", "b", "c"] valueIWantToFind = "b" if valueIWantToFind in my_list: target_index = my_list.index(valueIWantToFind) variable = my_list[target_index] else: # 值不存在时的自定义逻辑,比如给变量赋默认值 variable = None
方法2:for循环实现(匹配你最初的实现思路)
如果要手动写循环实现,有两种常见写法:
- 仅需要获取匹配值,不需要索引位置
my_list = ["a", "b", "c"] valueIWantToFind = "b" # 先给变量赋默认值 variable = None for current_value in my_list: if current_value == valueIWantToFind: variable = current_value # 找到第一个匹配项后直接跳出循环,避免无意义的遍历 break
- 需要同时获取匹配值和对应索引位置
可以搭配Python内置的enumerate()函数,遍历的时候同时拿到元素索引和元素值:
my_list = ["a", "b", "c"] valueIWantToFind = "b" variable = None target_index = None for idx, current_value in enumerate(my_list): if current_value == valueIWantToFind: variable = current_value target_index = idx break
如果列表中存在多个和目标值匹配的元素,上述写法只会取到第一个匹配结果;如果需要拿到所有匹配结果,删掉break语句,用列表存储所有匹配到的值和索引即可。
内容的提问来源于stack exchange,提问作者AeroGlory
相关产品推荐
相关产品推荐

