在列表中查找值的第一个位置

5
如果我有一个由1和2组成的列表,如何找到第一个1和2的索引。
例如,[1,1,1] 应该输出 (0,-1),其中-1表示不在列表中,[1,2,1] 应该输出 (0,1),[1,1,1,2] 应该输出 (0,3)。
1个回答

10

一种方法是创建一个单独的列表来查找项的 索引,并使用 index 函数和使用 列表推导式还需进行额外的检查以确保该项在列表中,否则可能会出现 ValueError 错误):

my_list = [1,1,1]
items = [1,2]
print ([my_list.index(item) if item in my_list  else -1 for item in items])

输出:

[0, -1]
如果需要元组,则可以使用tuple函数将上述列表转换为元组:
tuple([my_list.index(item) if item in my_list else -1 for item in items])

在不使用列表推导的情况下,更冗长地表达:

my_list = [1,1,1]
items = [1,2]
# create empty list to store indices
indices = []

# iterate over each element of items to check index for
for item in items:
    # if item is in list get index and add to indices list
    if item in my_list:
        item_index = my_list.index(item)
        indices.append(item_index)
    # else item is not present in list then -1 
    else:
        indices.append(-1)

print(indices)

1
不错的回答,+1。小问题。看起来他想要一个元组而不是一个列表。所以他应该使用tuple([my_list.index(item) if item in my_list else -1 for item in items])而不是仅仅使用[my_list.index(item) if item in my_list else -1 for item in items] - Christian Dean
@Christian Dean 谢谢您的评论!我会添加更新。 - niraj
你为什么要把这个变成列表推导式? - juanpa.arrivillaga
@juanpa.arrivillaga 我没有任何特定的原因,只是想写一个一行代码,你有什么建议吗? - niraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接