对 "one-line for loops" 使用枚举

Using enumerate for "one-line for loops"

我有一个像这样的列表

my_id = 3

Word IDs: [None, 0, 1, 2, 3, 3, 3, 4, None]

我想列出上面列表中的所有索引,它们对应的值等于my_id

我想写一个单行for循环。这是行不通的。有什么方法可以把它写成“一行 for 循环”吗?

我的方式:

list_of_word_ids = [i for enumerate(i,_id) in inputs if _id == id_word ]

在这种情况下我想要的输出是

4, 5, 6

enumerate returns 一个带有计数器的元组。您可以解压元组并检查秒值是否等于 my_id

Word_IDs= [None, 0, 1, 2, 3, 3, 3, 4, None]

list_of_word_ids = [i for i,j in enumerate(Word_IDs) if j == my_id]

一行代码会很麻木:

np.where(np.array(Word_IDs) == 3)[0].tolist()

结果:

[4, 5, 6]