如何从给定列表中获取字符串“ OFF”的索引。我尝试使用if语句在列表中循环,但未成功

如何从给定列表中获取字符串“ OFF”的索引。我尝试使用if语句在列表中循环,但未成功

New_Layer_list =[[6],[1],[1,3,':OFF',7,8,9],9,6]]
OFF_index_list = []
for i in New_Layer_list:
    for j in i:
        if j == ':OFF':
            OFF_index_list.append(i.index(j))
        else:
            pass
print(OFF_index_list)
# [2,2,3]

我不明白为什么它会给我OFF_index_list = [2,2,3]而不是[2,4,3]这是我期望的

ayufly 回答:如何从给定列表中获取字符串“ OFF”的索引。我尝试使用if语句在列表中循环,但未成功

问题出在表达式i.index(j)中。此方法返回元素i所在的j中的最低索引;因此即使在j的第二次出现时,它也会返回第一次出现的索引。

请注意,您仅在j == ':OFF'时调用它,并且每次在同一列表i.index(':OFF')上调用i时都不能返回不同的索引。


您的问题的解决方案是enumerate函数-您需要遍历索引/值对,以了解当前正在查看的值的索引。

New_Layer_list =[[6],[1],[1,3,':OFF',7,8,9],9,6]]
OFF_index_list = []

for lst in New_Layer_list:
    for idx,val in enumerate(lst):
        if val == ':OFF':
            OFF_index_list.append(idx)

print(OFF_index_list)
# [2,4,3]

我还对代码中的其他内容进行了整理,例如使变量名更具描述性,并摆脱了空的else块。

本文链接:https://www.f2er.com/3122268.html

大家都在问